python - 程序在调试模式下运行正常,但正常运行会报错
问题描述
这是我当前的代码,但每当我运行它时,最后一行都会出现错误
stale element reference: element is not attached to the page document
from selenium import webdriver
url = "https://otctransparency.finra.org/otctransparency/OtcDownload"
driver.get(url)
driver.maximize_window()
driver.implicitly_wait(5)
agree = driver.find_elements_by_xpath("//button[@class='btn btn-warning']")[0]
agree.click()
nonats = driver.find_element_by_link_text('OTC (Non-ATS) Download')
nonats.click()
driver.find_element_by_xpath("//img[@src='./assets/icon_download.png']").click()
driver.switch_to.window(driver.window_handles[0])
driver.find_element_by_xpath("(//div[@class='checkbox-inline'])[2]").click()
driver.find_element_by_xpath("(//div[@class='checkbox-inline'])[1]").click()
driver.implicitly_wait(5)
button = driver.find_element_by_xpath("//img[@src='./assets/icon_download.png']")
print(button.is_displayed())
button.click()
当我在调试模式下逐行运行代码时,一切正常,没有任何错误。任何帮助都会很棒。
编辑:这是我的堆栈跟踪
Traceback (most recent call last):
File "C:\Users\derpe\Desktop\python projects personal\testing finra\untitled1.py", line 31, in <module>
button.click()
File "C:\Users\derpe\anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py", line 80, in click
self._execute(Command.CLICK_ELEMENT)
File "C:\Users\derpe\anaconda3\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
return self._parent.execute(command, params)
File "C:\Users\derpe\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\derpe\anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
StaleElementReferenceException: stale element reference: element is not attached to the page document
(Session info: chrome=86.0.4240.75)
解决方案
在您搜索下载链接时,单击复选框会触发页面刷新。
调用sleep
以允许刷新完成。
driver.implicitly_wait(5)
import time # add this
time.sleep(1) # add this
button = driver.find_element_by_xpath("//img[@src='./assets/icon_download.png']")
print(button.is_displayed())
button.click()
我尝试了其他硒等待,但它们对我不起作用。可能是因为在刷新开始之前元素搜索成功,但仍然点击迟到。
推荐阅读
- python - OpenCV getTextSize 为某些字符提供了不正确的高度
- python - 3d数组中每n个切片的平均值 - python
- python - 如何使用 scipy.optimize 计算给定参数和约束的回归方程的最佳输入
- jupyter-notebook - Jupyter 笔记本中新单元格的默认代码
- python - 如何在熊猫中更改数据的形状
- python - Binance API 打开期货交易的正确方法?
- influxdb - 合并多个涌入数据库并将带有数据库名称的标签添加到数据中?
- download - Opentest - 如何在 chrome(配置 ACTOR 文件)上运行测试,使其直接允许下载而不显示 Keep/Discard 选项?
- kotlin - 与迭代 Kotlin 中枚举值的泛型方法的接口
- amazon-web-services - AWS RDS 集群实例是否需要相同大小?