Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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
如何使用Python将文本插入表单控件/下拉列表来解决此错误?_Python_Selenium - Fatal编程技术网

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

如何使用Python将文本插入表单控件/下拉列表来解决此错误?,python,selenium,Python,Selenium,我正试图使用Firefox在Python中完成我的第一个网页抓取项目。我使用的是pythonversion3.7.4和firefoxdeveloper71。两者都是64位的,我使用的是windows10 问题是试图通过python访问此表单控件。最后,我希望将文本插入表单控件,然后通过web刮取结果。然而,我现在只是想点击这个对象,因为它很难得到 这是我的密码: from selenium import webdriver from selenium.webdriver.common.actio

我正试图使用
Firefox
Python
中完成我的第一个网页抓取项目。我使用的是
pythonversion3.7.4
firefoxdeveloper71
。两者都是64位的,我使用的是
windows10

问题是试图通过
python
访问此表单控件。最后,我希望将文本插入表单控件,然后通过web刮取结果。然而,我现在只是想点击这个对象,因为它很难得到

这是我的密码:

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:消息:类型错误:未定义rect

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

我曾尝试使用动作链和睡眠功能以多种方式对此进行故障排除,但我一直收到一条错误消息

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

以下可能会解决此问题:

    jcode_form = driver.find_element_by_id('ndcCode')
    jcode_form.click()
或者在一行中:

    driver.find_element_by_id('ndcCode').click()

以下可能会解决这个问题:

    jcode_form = driver.find_element_by_id('ndcCode')
    jcode_form.click()
或者在一行中:

    driver.find_element_by_id('ndcCode').click()

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

elements_count = driver.find_elements_by_id("ndcCode")
print(str(len(elements_count))
如果“1”未打印,则定位器策略需要更新为更具体的内容。无论如何,我将对以下代码示例使用更新的策略

第一种方法是简单的
单击()
,然后是
发送密钥()

这是最基本的方法,但最好先排除这种可能性。接下来,我将尝试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,这样我就可以尝试调试和测试这些代码示例。

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

elements_count = driver.find_elements_by_id("ndcCode")
print(str(len(elements_count))
如果“1”未打印,则定位器策略需要更新为更具体的内容。无论如何,我将对以下代码示例使用更新的策略

第一种方法是简单的
单击()
,然后是
发送密钥()

这是最基本的方法,但最好先排除这种可能性。接下来,我将尝试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,以便我可以尝试调试和测试这些代码示例。

哪行代码导致了此错误?您能发布完整的堆栈跟踪吗?始终将完整的错误消息(从单词“Traceback”开始)作为文本(而不是屏幕截图)放在问题中(不是注释)。还有其他有用的信息。您应该为此页面添加url,以便我们可以查看其HTML和测试代码。您的url引发错误:
HTTP 404-未找到文件
哪一行代码导致此错误?您能发布完整的堆栈跟踪吗?始终将完整的错误消息(从单词“Traceback”开始)作为文本(而不是屏幕截图)放在问题中(不是注释)。还有其他有用的信息。您应该为此页面添加url,以便我们可以查看其HTML和测试代码。您的url引发错误:
HTTP 404-未找到文件