gpt4 book ai didi

python - 如何使用 Python 将文本插入表单控件/下拉列表来解决此错误?

转载 作者:太空宇宙 更新时间:2023-11-03 20:02:40 25 4
gpt4 key购买 nike

我正在尝试在 Python 中进行我的第一个网页抓取项目使用Firefox 。我正在使用Python version 3.7.4Firefox Developer 71 。两者都是 64 位,我正在使用 Windows 10 .

问题是试图通过 python 访问此表单控件。最终,我想将文本插入表单控件,然后网络抓取结果。然而,我现在只是想点击该对象,因为它很难获得。

这是我的代码:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
import time

driver = webdriver.Firefox()
driver.get("https://www.website.com/login/")

jcode_form = driver.find_element_by_id('ndcCode')
hov = ActionChains(driver).move_to_element(jcode_form)
time.sleep(6)
hov.click()
hov.perform()

我收到的错误是:

WebDriverException: Message: TypeError: rect is undefined

Here is what I'm seeing on my browser

我尝试使用的对象是顶部的表单控件。

我尝试使用操作链和 sleep 函数以多种方式解决此问题,但我不断收到错误消息。

任何帮助或建议将不胜感激。谢谢。

最佳答案

我会在这里尝试一些不同的方法,包括 send_keys()、Javascript 或两者的组合。首先,我想将您的定位器修改为更独特的东西 - ID ndcCode 可能会也可能不会在页面上多次使用,如果我们定位多个元素,那么这将引发意外的结果。您可以按如下方式验证这一点:

elements_count = driver.find_elements_by_id("ndcCode")
print(str(len(elements_count))

如果未打印“1”,则需要将定位器策略更新为更具体的内容。无论如何,我将为以下代码示例使用更新的策略。

第一种方法只是一个简单的click(),然后是send_keys():

jcode_form = driver.find_element_by_xpath("//input[contains(@placeholder, 'Start typing a Code, Drug, Product')]")
jcode_form.click()
jcode_form.send_keys("someText")

这是最基本的方法,但最好首先排除这种情况。接下来,我将尝试 Javascript 方法来执行相同的操作:

jcode_form = driver.find_element_by_xpath("//input[contains(@placeholder, 'Start typing a Code, Drug, Product')]")
driver.execute_script("arguments[0].click();", jcode_form) # perform click
driver.execute_script("arguments[0].value = 'someText';", jcode_form) # set the value

我很想听听您尝试这些代码示例后的结果。如果它们不适合您,请随时对此答案发表评论,并让我知道您遇到的任何错误。如果可能的话,我有兴趣查看您正在测试的 URL,以便我可以尝试调试和测试这些代码示例。

关于python - 如何使用 Python 将文本插入表单控件/下拉列表来解决此错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59143538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com