【发布时间】:2021-03-06 15:07:27
【问题描述】:
上下文
这是Get a page with Selenium but wait for element value to not be empty的转贴,据我所知已关闭,没有任何有效性。
闭包推理中的链接答案都依赖于知道预期的文本值是什么。在每个答案中,它明确显示硬编码到 WebDriverWait 调用中的预期文本。此外,链接的答案都没有触及我问题的最后一部分:
[期望条件]在页面获取之前还是之后来
“重复”问题
- How to extract data from the following html?
- Assert if text within an element contains specific partial text
原始问题
我正在使用 Selenium 抓取一个网页,但我需要等待某个值才能加载。我不知道值是什么,只知道它会出现在什么元素中。
似乎使用预期的条件 text_to_be_present_in_element_value 或 text_to_be_present_in_element 是最有可能的前进方式,但我很难找到任何关于如何使用这些的实际文档,我不知道它们是否出现在之前或页面获取后:
webdriver.get(url)
改写
如何使用 Selenium 获取页面,但在继续之前等待未知文本值填充元素的文本或值?
【问题讨论】:
-
你能在元素存在之前和之后添加 HTML 吗?你看过stackoverflow.com/questions/28240342/…吗?
-
@MaximilianPeters 我需要的特定元素似乎总是存在于抓取的文档中,只是其中没有文本值。当我在浏览器中加载页面时,在填充之前该值是空白的一两秒钟。我很想发布原始 HTML,但我现在正在处理一个阻止我登录该站点的身份验证问题。一旦客户端修复了他们的身份验证,我将使用原始 HTML 进行更新。您的链接问题看起来很有希望。解封后我会试一试。
-
似乎你只需要一个轮询循环......检查元素是否为空。如果不是,那么继续。您不需要 webdriverwait 或预期条件。
-
@pcalkins 我想我的印象是,一旦用
driver.get(url)抓取页面,它就会作为静态对象存在,但如果它会继续加载它的元素,那么我的问题应该是有效的解决了。一旦我重新获得访问权限,我很想尝试一下...... -
听起来像一个“延迟加载”网站,它会在页面完全加载后触发脚本来填充 DOM。
标签: python selenium selenium-webdriver