所以,我有一个关于缓慢加载数据的问题,这会导致我的 Selenium 关闭。
页面本身完成加载,但我随后在指定的跨度内以随机间隔显示数据(脚本正在运行,可能需要 X 的时间)。它可能显示为空或带有字符串“n/a”。
注意:chart-data-window-item-value 类不是唯一的,我必须使用 XPATH 来找到正确的 div/span。
我正在等待一个跨度填满一个随机小数,然后继续。
空跨度:
<div class="chart-data-window-item-value"><span style="color:"></span></div>
或
<div class="chart-data-window-item-value"><span style="color:">n/a</span></div>
数据加载完成后:
<div class="chart-data-window-item-value"><span style="color:rgba(255, 127, 0, 1)">73.26000000</span></div>
我试过各种方法,最后是:
# wait = WebDriverWait(browser, 10).until(EC.text_to_be_present_in_element_value((By.XPATH, '/html/body/div[1]/div[3]/div/div[1]/div[1]/div[3]/div/div[2]/div[1]/div[3]/div[2]/div[10]/div[2]/span'), r"(?<=\()[0-9]*)"))
运气不好。
有什么建议吗?
请您参考如下方法:
我认为你让这件事变得比它需要的更复杂。如果你看the docs对于 text_to_be_present_in_element,您会在右侧看到一个 [source] 链接。单击它并查看源代码以了解其工作原理。检查的条件是 self.text in element_text 这是一个包含。有了这些信息,您应该能够在元素文本中查找 .,这表明您的号码已出现。
WebDriverWait(browser, 10).until(EC.text_to_be_present_in_element_value((By.XPATH, '/html/body/div[1]/div[3]/div/div[1]/div[1]/div[3]/div/div[2]/div[1]/div[3]/div[2]/div[10]/div[2]/span'), '.'))
您的代码使用的是正则表达式(我认为)...该方法不接受正则表达式,可能只是将其作为实际字符串处理。
