Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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
PyCharm和/或python不是';在我在调试器中打开该类之前,我无法识别WebElement(Selenium)变量_Python_Selenium_Pycharm - Fatal编程技术网

PyCharm和/或python不是';在我在调试器中打开该类之前,我无法识别WebElement(Selenium)变量

PyCharm和/或python不是';在我在调试器中打开该类之前,我无法识别WebElement(Selenium)变量,python,selenium,pycharm,Python,Selenium,Pycharm,我在一个项目中遇到了一些非常奇怪的行为。本质上,这种自动化使用selenium在网页上创建一篇文章,并通过单击/打开该文章来验证它的存在。但是,当我在不调试的情况下运行程序时,它无法在web元素上“单击()。所以我调查并开始调试。我注意到web元素(“target_元素”)是“None”。我继续进行调试,但它没有按预期单击“target_元素”。 当我重新运行程序时,我没有继续,而是在debug视图中打开该类。我看到“target\u element”存在,所以我继续,target\u elem

我在一个项目中遇到了一些非常奇怪的行为。本质上,这种自动化使用selenium在网页上创建一篇文章,并通过单击/打开该文章来验证它的存在。但是,当我在不调试的情况下运行程序时,它无法在web元素上“单击()。所以我调查并开始调试。我注意到web元素(“target_元素”)是“None”。我继续进行调试,但它没有按预期单击“target_元素”。 当我重新运行程序时,我没有继续,而是在debug视图中打开该类。我看到“target\u element”存在,所以我继续,target\u element.click()成功地将文章加载到网页上。有人对如何解决这个问题有什么建议吗

TLDR;运行程序时,article.target_元素不存在,除非我设置了断点并查看调试器中的“article”。然后,如果我在程序文章中继续。target_元素突然存在

可能的原因是元件加载时间。

运行测试时,Selenium的运行速度超过元素正确加载所需的时间,并最终引发异常。另一方面,在调试过程中,您将介入并给元素足够的时间进行加载,Selenium将在没有任何问题的情况下找到元素

如果,问题正是上面提到的,那么使用应该是一条路要走

示例取自Selenium Python文档

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,你上面发布的等待确实有效。现在,我需要找到一种方法,通过我当前的实现来实现这一点。谢谢