在Angular网站中,使用Selenium&Python获取<div>标签内的精确文本?

2024-09-27 21:33:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用selenium和python在标签中获得精确的文本。在

当我检查元素时,我可以在浏览器上看到下面的html。在

<div class="value ng-binding" ng-bind="currentEarning">£8.8</div> == $0

我用selenium编写了python代码,以获得如下文本。在

^{pr2}$

当我多次运行这个脚本时,我偶尔得到的结果是0-这不是真的。在

我很少能得到£8.8-这是真的。在

我想我偶尔会得到0,因为== $0,但我不确定。在

如何将文本作为£8.8?-使用正则表达式?如果是这样,怎么办?在


Tags: 代码文本div元素valuebindhtmlselenium
2条回答

它的出现可能是因为,页面加载后填充文本需要一些时间,而且似乎您等待的时间不够。在

可以使用显式wait来等待元素包含特定文本。在

对于您的情况,下面的示例可能有用。在

wait = WebDriverWait(driver, 30)
wait.until(EC.text_to_be_present_in_element((By.XPATH, "//div[@ng-bind='currentEarning']"), "£"))

以下是您问题的答案:

得到不正确结果的原因之一可能是由于JavaScript和AJAX调用导致的htmldom异步呈现。因为您已经获得了ng-bind属性的帮助,所以我们想要的节点可能不是{}中唯一/第一个匹配的节点。因此,我们将通过添加class属性和ng-bind属性并借助get_attribute方法来获得文本£8.8,从而使xpath更加细化和独特:

currentEaring = Ladbrokes.find_element_by_xpath('//div[@class="value ng-binding" and @ng-bind="currentEarning"]').get_attribute("innerHTML")

如果这回答了你的问题,请告诉我。在

相关问题 更多 >

    热门问题