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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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
如何在页面刷新后等待元素,该元素以前是通过Selenium和Python呈现的_Python_Selenium_Selenium Webdriver_Webdriver_Webdriverwait - Fatal编程技术网

如何在页面刷新后等待元素,该元素以前是通过Selenium和Python呈现的

如何在页面刷新后等待元素,该元素以前是通过Selenium和Python呈现的,python,selenium,selenium-webdriver,webdriver,webdriverwait,Python,Selenium,Selenium Webdriver,Webdriver,Webdriverwait,在另一个问题上也提出了类似的问题 此答案无效,因为元素已存在于上一页中。我希望能够等到页面加载完成后再抓取元素。由于元素存在于上一页中,现在您希望在页面加载完成后抓取元素,您可以先诱导WebDriverWait进行加载,然后再次进行加载,您可以使用以下解决方案: WebDriverWait(browser, 10).until(EC.staleness_of(driver.find_element_by_id("element_id")) element = WebDriverWait(brow

在另一个问题上也提出了类似的问题


此答案无效,因为元素已存在于上一页中。我希望能够等到页面加载完成后再抓取元素。

由于元素存在于上一页中,现在您希望在页面加载完成后抓取元素,您可以先诱导WebDriverWait进行加载,然后再次进行加载,您可以使用以下解决方案:

WebDriverWait(browser, 10).until(EC.staleness_of(driver.find_element_by_id("element_id"))
element = WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.ID, "element_id"))

由于元素存在于上一个页面中,现在您希望在页面加载完成后获取该元素,您可以先为导入WebDriverWait,然后再次为导入WebDriverWait,您可以使用以下解决方案:

WebDriverWait(browser, 10).until(EC.staleness_of(driver.find_element_by_id("element_id"))
element = WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.ID, "element_id"))

如果要等待页面加载,然后执行进一步的步骤,可以使用javascriptexecutor。只有在页面完全加载时,才会返回“complete

driver.execute_script("return document.readyState")=="complete"

如果要等待页面加载,然后执行进一步的步骤,可以使用javascriptexecutor。只有在页面完全加载时,才会返回“complete

driver.execute_script("return document.readyState")=="complete"

你能在新页面上找到另一个元素并等待它吗?如果你使用
browser.refresh()
加载页面后立即?如果唯一的问题是该元素已经在页面上找到,您可以采取简单的方法,在每个页面上将WebElement声明为不同的变量。…。@a.Feng我已经编辑了问题标题以反映您的用例。如果编辑不正确,请随时恢复更改。是否可以在新页面上找到另一个元素并等待它?如果执行
browser.refresh()
加载页面后立即?如果唯一的问题是该元素已经在页面上找到,您可以采取简单的方法,在每个页面上将WebElement声明为不同的变量。…。@a.Feng我已经编辑了问题标题以反映您的用例。如果编辑不正确,请随时恢复更改。这不是使用
staleness\u of()
的方式。您的方法将根据您是在页面重新加载之前还是之后找到元素引入竞争条件。您需要找到元素并将其存储在
e
中,执行导致页面刷新的操作,然后等待
e
过期。什么?我怎么会失去这样提问的权利?我只是找出自己的答案,而不是问别人。。。。但这些都与为什么这个答案是错误的无关。我已经在我的评论中解释了为什么。。。你没有证据反驳我说的话吗?这不是你如何使用()的
staleness\u
。您的方法将根据您是在页面重新加载之前还是之后找到元素引入竞争条件。您需要找到元素并将其存储在
e
中,执行导致页面刷新的操作,然后等待
e
过期。什么?我怎么会失去这样提问的权利?我只是找出自己的答案,而不是问别人。。。。但这些都与为什么这个答案是错误的无关。我已经在我的评论中解释了为什么。。。你没有证据反驳我说的话吗?Selenium已经默认这么做了。。。。它会阻止页面加载,直到readyState=complete。默认情况下,Selenium已经这样做了。。。。它会阻止页面加载,直到readyState=complete。