PyCharm和/或python不是';在我在调试器中打开该类之前,我无法识别WebElement(Selenium)变量
我在一个项目中遇到了一些非常奇怪的行为。本质上,这种自动化使用selenium在网页上创建一篇文章,并通过单击/打开该文章来验证它的存在。但是,当我在不调试的情况下运行程序时,它无法在web元素上“单击()。所以我调查并开始调试。我注意到web元素(“target_元素”)是“None”。我继续进行调试,但它没有按预期单击“target_元素”。 当我重新运行程序时,我没有继续,而是在debug视图中打开该类。我看到“target\u element”存在,所以我继续,target\u element.click()成功地将文章加载到网页上。有人对如何解决这个问题有什么建议吗 TLDR;运行程序时,article.target_元素不存在,除非我设置了断点并查看调试器中的“article”。然后,如果我在程序文章中继续。target_元素突然存在 可能的原因是元件加载时间。 运行测试时,Selenium的运行速度超过元素正确加载所需的时间,并最终引发异常。另一方面,在调试过程中,您将介入并给元素足够的时间进行加载,Selenium将在没有任何问题的情况下找到元素 如果,问题正是上面提到的,那么使用应该是一条路要走 示例取自Selenium Python文档PyCharm和/或python不是';在我在调试器中打开该类之前,我无法识别WebElement(Selenium)变量,python,selenium,pycharm,Python,Selenium,Pycharm,我在一个项目中遇到了一些非常奇怪的行为。本质上,这种自动化使用selenium在网页上创建一篇文章,并通过单击/打开该文章来验证它的存在。但是,当我在不调试的情况下运行程序时,它无法在web元素上“单击()。所以我调查并开始调试。我注意到web元素(“target_元素”)是“None”。我继续进行调试,但它没有按预期单击“target_元素”。 当我重新运行程序时,我没有继续,而是在debug视图中打开该类。我看到“target\u element”存在,所以我继续,target\u elem
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get("http://somedomain/url_that_delays_loading")
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "myDynamicElement"))
)
finally:
driver.quit()
我刚试过这个,我也遇到了同样的问题。在页面上找到元素,等待立即完成;但是,除非在debug视图中显式打开该类,否则该变量仍然为None。在我查看类之后,变量将被元素填充。@Darthlemi有趣。你能分享你的测试代码吗?我不能分享比我在原始图片中发布的更多的代码post@Darthlemi我想看看你是如何实现显式等待的。如果你有限制,那很好,所以我改变了一些东西,添加了一些硬编码的XPath,你上面发布的等待确实有效。现在,我需要找到一种方法,通过我当前的实现来实现这一点。谢谢