Spi*_*or8 1 python web-scraping selenium-webdriver
我正在尝试使用 python 中的 selenium 包来加载要保存的动态网站。但我的成功有好有坏。我注意到成功保存的页面和未保存的页面之间存在差异。在成功者的 HTML 源代码中,我看到
<script language="javascript" type="text/javascript">
var PageIsReady = true;
</script>
Run Code Online (Sandbox Code Playgroud)
而对于其他情况,var PageIsReady 为 false。有没有办法可以在变量变为真后触发保存?
这个stackoverflow 问题展示了如何执行超时,但它会查找标签的存在,而我希望它触发脚本变量的值。
解决此问题的一个好方法是实现自定义等待条件,该条件将检查变量是否已定义。条件必须看起来像这样(注意,没有经过彻底测试):
class js_variable_evals_to_true(object):
def __init__(self, variable):
self.variable = variable
def __call__(self, driver):
return driver.execute_script("return {0};".format(self.variable))
Run Code Online (Sandbox Code Playgroud)
用法:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
chrome = webdriver.Chrome()
chrome.get("http://google.com")
try:
element = WebDriverWait(chrome, 10).until(js_variable_evals_to_true("toolbar.visible")
finally:
chrome.quit()
Run Code Online (Sandbox Code Playgroud)
检查Selenium 文档中的源代码,了解如何实现自定义等待条件。
归档时间: |
|
查看次数: |
1335 次 |
最近记录: |