等到页面刷新

luc*_*ool 8 python selenium webdriver wait selenium-webdriver

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

submit_btn.click()
driver.implicitly_wait(10)  
driver.find_element_by_name("Buy_Product")
soup=BeautifulSoup(driver.page_source)
Run Code Online (Sandbox Code Playgroud)

当输入第一组参数时,页面是清晰的,它不包含名称为"Buy_Product"的buttton,所以我使用的是

driver.find_element_by_name("Buy_Product")
Run Code Online (Sandbox Code Playgroud)

确保代码等待该按钮出现,这意味着该页面现在包含我想要提取的价格.问题是第二次通过循环,当我改变参数并尝试获得新价格时,按钮"Buy_Product"已经存在,所以隐式等待不再有效,有时它会在价格有时间之前采用之前的page_source要被更新.棘手的部分是有时甚至对于不同的参数价格是相同的,所以我不能只检查价格的可见文本是否已经改变.任何想法如何在不使用time.sleep的情况下解决这个问题?

Anu*_*ony 1

这里的情况有些棘手...我不确定...这是否有帮助...但是尝试一下...

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

IWait<IWebDriver> Driver_Wait = new OpenQA.Selenium.Support.UI.WebDriverWait(driver, TimeSpan.FromSeconds(30.00));
Driver_Wait.Until(Driver => ((IJavaScriptExecutor)JS_Driver).ExecuteScript("return document.readyState").Equals("complete"));
Run Code Online (Sandbox Code Playgroud)

我希望这会有所帮助......祝一切顺利:-)