Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/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
Python 等待页面刷新_Python_Selenium_Webdriver_Wait_Selenium Webdriver - Fatal编程技术网

Python 等待页面刷新

Python 等待页面刷新,python,selenium,webdriver,wait,selenium-webdriver,Python,Selenium,Webdriver,Wait,Selenium Webdriver,以下是我试图在Python中使用Selenium Webdriver所做的描述: 我有我的网站,作为输入的具体产品的各种参数,并输出这些参数的产品价格。除了一个参数外,我保持所有参数不变,并在for循环中改变一个特定参数,以查看价格如何根据该特定参数变化。更改参数后,我提交表单,然后隐式使用wait,如下所示: submit_btn.click() driver.implicitly_wait(10) driver.find_element_by_name("Buy_Product") so

以下是我试图在Python中使用Selenium Webdriver所做的描述: 我有我的网站,作为输入的具体产品的各种参数,并输出这些参数的产品价格。除了一个参数外,我保持所有参数不变,并在for循环中改变一个特定参数,以查看价格如何根据该特定参数变化。更改参数后,我提交表单,然后隐式使用wait,如下所示:

submit_btn.click()
driver.implicitly_wait(10)  
driver.find_element_by_name("Buy_Product")
soup=BeautifulSoup(driver.page_source)
当输入第一组参数时,页面是清晰的,它不包含名为“Buy_Product”的Button,因此我使用该行

driver.find_element_by_name("Buy_Product")
确保代码等待按钮出现,这意味着页面现在包含我想要提取的价格。 问题是,第二次通过循环时,当我改变参数并尝试获取新价格时,“Buy_Product”按钮已经存在,因此隐式等待不再起作用,有时需要上一页的源代码才能更新价格。 棘手的是,有时即使对于不同的参数,价格也是相同的,所以我不能仅仅检查价格的可见文本是否发生了变化。
有没有办法不用花时间就解决这个问题。睡眠?

这里的情况很棘手……我不确定……如果这有帮助……但是试试看

我的建议是JavaScript注入,我检查页面是否完全加载,然后等待。(c#代码片段)

IWait-Driver\u Wait=new-OpenQA.Selenium.Support.UI.WebDriverWait(Driver,TimeSpan.FromSeconds(30.00));
Driver_Wait.Until(Driver=>((IJavaScriptExecutor)JS_Driver).ExecuteScript(“returndocument.readyState”).Equals(“complete”);

我希望这能有所帮助……最好是:-)

如果Anuragh27 Crony的解决方案对您不起作用,您可能还需要考虑等待jquery处于非活动状态。 代码看起来基本相同,但传入此javascript调用:

ExecuteScript("return jQuery.active == 0")

wait\u for\u page\u load()
是否已删除…?您是重新加载整个页面还是使用javascript更新价格?您提交了一个表单,该表单将呈现一个新页面Edu
ExecuteScript("return jQuery.active == 0")