自动填充停止后如何从 csv 文件中的最后一个选择行开始自动填充 python selenium webdriver

问题描述 投票:0回答:1

我已经用 python selenium 创建了一个自动填充,但有一个小问题,自动填充在达到自动填充行 15 或 18 或 20 后会自行停止,当我重新启动自动填充时,它会从头开始然后我有问题是我有 2x-3x 的 Web 表单具有相同的数据。

您是否有一个解决方案,以便我的自动填充,例如,自动填充在第 15 行停止,然后我重新启动它,它再次从第 15 行开始,这样我就不会多次获得相同的数据。

在此输入图片描述

#-------------------------------------------------------------------------------
# Imports
import csv
from selenium import webdriver
from selenium.webdriver.common.by import By
import time


#-------------------------------------------------------------------------------
# Setup

name = 0
age = 1
score = 2

with open('data.csv', 'r', encoding='utf8', errors='ignore') as csv_file:

    csv_reader = csv.reader(csv_file)


#-------------------------------------------------------------------------------
# Web Automation

    for line in csv_reader:

        driver = webdriver.Chrome()
        driver.get('https://mysite.domain/?page_id=311')
      
        Add_to = driver.find_element(By.XPATH, "//*[@id='site-content']")
        Add_to.click()
        time.sleep(3)
        
        driver.get('https://mysite.domain/?page_id=385')
        
        name_field = driver.find_element(By.XPATH, "//*[@id='first_name']")
        name_field.send_keys(line[0])

        age_field = driver.find_element(By.XPATH, "//*[@id='last_name']")
        age_field.send_keys(line[1])

        Adress = driver.find_element(By.XPATH, "//*[@id='address_1']")
        Adress.send_keys(line[2])

        Zip = driver.find_element(By.XPATH, "//*[@id='postcode']")
        Zip.send_keys(line[3])

        City = driver.find_element(By.XPATH, "//*[@id='city']")
        City.send_keys(line[4])

        Phone = driver.find_element(By.XPATH, "//*[@id='phone']")
        Phone.send_keys(line[5])

        Email = driver.find_element(By.XPATH, "//*[@id='email']")
        Email.send_keys(line[6])

        Submit = driver.find_element(By.XPATH, "//*[@id='Submit']")
        Submit.click()
        time.sleep(3)
        


#-------------------------------------------------------------------------------

我的一次尝试并没有真正奏效:(

网络自动化

for line in csv_reader:
csv.reader("let lastrow = $('table').find('tr')[document.querySelectorAll('table tr').length-1];$(lastrow).find('.fa-edit').click();")

    driver = webdriver.Chrome()
    driver.get('https://mysite.domain/?page_id=311')...
python excel selenium-webdriver webforms autofill
1个回答
0
投票

我希望这是一条评论,但我没有足够的代表。所以...无论如何

您可以通过实现一种机制来跟踪最后处理的行并将此状态保存在外部来实现此目的,我选择了一个文件来为我执行此操作。 这样,当脚本重新启动时,我们可以读取最后处理的行并从那里重新开始。

也许可以尝试这些步骤。

  1. 添加一个函数,可以保存文件中最后访问的行索引,并使用它下次从您想要的位置访问

  2. 我建议您将 CSV 转换为列表,因为它更容易使用。

  3. 确保循环从最后处理的行进行更新。

© www.soinside.com 2019 - 2024. All rights reserved.