gpt4 book ai didi

python - selenium python问题-无效的元素状态

转载 作者:行者123 更新时间:2023-11-30 22:22:21 24 4
gpt4 key购买 nike

使用适用于 selenium 的 Chrome 驱动程序时出现错误:“元素状态无效”。

我正在尝试做的事情:传入一些数据到http://www.dhl.de/onlinefrankierung

我的第一个问题是,当我尝试在名为“Nachnahme”的复选框上使用 .click() 方法时,没有任何反应,也没有进行任何检查。

当您手动进行检查时,页面会刷新并打开其他字段,这就是我要访问的内容。

第二个问题是在尝试使用 .send_keys() 方法传入数据时发生的,它会抛出无效的元素状态。

这是迄今为止我的代码:

from selenium import webdriver
driver = webdriver.Chrome('C:\\Users\\Owner\\AppData\\Local\\Programs\\Python\\Python36-32\\Lib\\site-packages\\chromedriver.exe')
driver.get('http://www.dhl.de/onlinefrankierung')
product_element = driver.find_element(by='id', value='bpc_PAK02')
product_element.click()
services_element = driver.find_element(by='id', value='sc_NNAHME')
services_element.click()
address_element_name = driver.find_element(by='name', value='formModel.sender.name')
address_element_name.send_keys("JackBlack")

ERROR: C:\Users\Owner\AppData\Local\Programs\Python\Python36-32\python.exe "C:/Users/Owner/Desktop/UpWork/Marvin Sessner/script.py" Traceback (most recent call last): File "C:/Users/Owner/Desktop/UpWork/Marvin Sessner/script.py", line 23, in address_element_name.send_keys("tester") File "C:\Users\Owner\AppData\Roaming\Python\Python36\site-packages\selenium\webdriver\remote\webelement.py", line 352, in send_keys 'value': keys_to_typing(value)}) File "C:\Users\Owner\AppData\Roaming\Python\Python36\site-packages\selenium\webdriver\remote\webelement.py", line 501, in _execute return self._parent.execute(command, params) File "C:\Users\Owner\AppData\Roaming\Python\Python36\site-packages\selenium\webdriver\remote\webdriver.py", line 308, in execute self.error_handler.check_response(response) File "C:\Users\Owner\AppData\Roaming\Python\Python36\site-packages\selenium\webdriver\remote\errorhandler.py", line 194, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.InvalidElementStateException: Message: invalid element state (Session info: chrome=HIDDEN) (Driver info: chromedriver=HIDDEN (5b82f2d2aae0ca24b877009200ced9065a772e73),platform=Windows NT 10.0.15063 x86_64)

最佳答案

在两个操作之间放置一个小的 sleep 就可以解决这个问题。下面的代码工作得很好。

现在,在有人对 sleep 进行否决或发表评论之前。让我澄清一下,这是最好的解决方案吗? 不,不是

但是现在你知道为什么它不起作用了,你的操作正在生成一些 AJAX 请求,在它完成之前你正在尝试执行另一个导致问题的操作。

好的解决方案是编写条件,等待该操作完成,但同时您有一个有效的临时解决方案。

import time
from selenium import webdriver
driver = webdriver.Chrome('h:\\bin\\chromedriver.exe')
driver.get('http://www.dhl.de/onlinefrankierung')
product_element = driver.find_element(by='id', value='bpc_PAK02')
product_element.click()
time.sleep(5)
services_element = driver.find_element(by='id', value='sc_NNAHME')
services_element.click()
time.sleep(5)
address_element_name = driver.find_element(by='name', value='formModel.sender.name')
address_element_name.send_keys("JackBlack")

关于python - selenium python问题-无效的元素状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48346563/

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