Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Selenium、Python和Excel自动化Web表单填充_Python_Excel_Selenium_Browser Automation - Fatal编程技术网

使用Selenium、Python和Excel自动化Web表单填充

使用Selenium、Python和Excel自动化Web表单填充,python,excel,selenium,browser-automation,Python,Excel,Selenium,Browser Automation,我在excel文件的一列中循环,以自动完成表格并提交。然而,挑战在于: 我无法将excel列中的值输入表单的第一个字段 表单的div元素在发送值之前为我提供了不可单击的元素。 在此处查看表单的外观: Img1: Img2: 当您手动开始键入名称时,第一个字段(艺术家)会自动打开,其中包含值,然后您可以选择该选项 我的Python脚本如下: from selenium import webdriver import pandas as pd from selenium.webdriv

我在excel文件的一列中循环,以自动完成表格并提交。然而,挑战在于:

  • 我无法将excel列中的值输入表单的第一个字段

  • 表单的div元素在发送值之前为我提供了不可单击的元素。 在此处查看表单的外观:
Img1:

Img2:

当您手动开始键入名称时,第一个字段(艺术家)会自动打开,其中包含值,然后您可以选择该选项

我的Python脚本如下:

from selenium import webdriver
import pandas as pd
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import time

#Read Data file
df = pd.read_excel('try.xlsx')

#Import Driver components
driver = driver = webdriver.Chrome('/home/dev-mike/.wdm/drivers/chromedriver/linux64/88.0.4324.96/chromedriver')
url = 'myurl'
username = 'myname.com'
password = '****'

driver.get(url)
time.sleep(2)
driver.find_element_by_id("email").send_keys(username)
time.sleep(1)
driver.find_element_by_id("password").send_keys(password)
time.sleep(1)
driver.find_element_by_xpath("//*[@id='app']/main/div/div/div/div/div[2]/form/div[4]/div/button").click()
time.sleep(1)
driver.find_element_by_xpath("/html/body/div/div[1]/div[3]/div[1]/div[2]/div[2]/button").click()

# #Inside Dashboard
for i in df.index:
    entry = df.loc[i]

    #Name Field
    driver.find_element_by_xpath('/html/body/div/div[2]/aside[1]/div/div[2]/div/form/div[1]/div/div/div/div[2]/span').click()
    time.sleep(10)
    artist_input = driver.find_element_by_xpath('/html/body/div/div[2]/aside[1]/div/div[2]/div/form/div[1]/div/div/div/div[3]/ul/li[1]/span/span')
    artist_input.send_keys(entry['Artist'])
    time.sleep(1)

    title_input = driver.find_element_by_id('input-2')
    title_input.send_keys(entry['Title'])
    time.sleep(1)

    medium_input = driver.find_element_by_id('input-3')
    medium_input.send_keys(entry['Medium'])
    time.sleep(1)
“我的表单”字段元素的横截面如下所示: 这是基于在该输入字段中键入Paul的假设


艺术家
开始键入。。。
  • 保罗·高更
  • 保罗卡斯帕
  • 里戈
  • 没有找到任何元素。考虑更改搜索查询。
  • 什么也没找到
使用:

driver.find_element_by_xpath(f"//div[@role='option'][normalize-space(.)='{your_input_text}']").click()

如果它不起作用,请说它是什么网站,我帮你查一下。

@NatRiddle你能再查一下吗。我已经添加了代码段,但没有成功。但是我怎样才能联系到你。你可以给我发邮件,给你。safarzadeh1999@gmail.com