【问题标题】:Wait for text in an element to be a number in Selenium with Python使用 Python 等待元素中的文本成为 Selenium 中的数字
【发布时间】:2020-12-04 09:58:45
【问题描述】:

一个动态生成的网站有这样一个元素:

<b class="2020-is-terrible"></b>

一段时间后,它会用这样的随机数填充b 元素:

<b class="2020-is-terrible">42</b>

我想等待生成该号码,现在我想出了一个等待特定号码的代码:

WebDriverWait(driver, 10).until(expected_conditions.text_to_be_present_in_element((By.CLASS_NAME, "2020-is-terrible"), "42"))

但如果b 元素中出现任何值(不仅仅是 42),我想继续。该值将始终是一个数字,所以我只需要检查文本是否为空。

expected_conditions 类列表,因此您无需使用 Google 搜索。

【问题讨论】:

  • 我不是 Python 人,所以我不知道正确的语法,但是您是否尝试检查获取的文本是否不为空并且是数字?你可以在until 部分做到这一点。

标签: python-3.x selenium wait expected-condition


【解决方案1】:

使用 xpath,您还可以通过组合类名和 text!='' 来使用 and 运算符,如下所示:

//b[@class='2020-is-terrible' and text()!='']

试试这个:

WebDriverWait(driver, 10).until(expected_conditions.presence_of_element_located((By.XPATH, "//b[@class='2020-is-terrible' and text()!='']")))

【讨论】:

    【解决方案2】:

    这是一个对我有用的解决方案:

    WebDriverWait(driver, 10).until(lambda wd: wd.find_element_by_class_name("threat-score").text != "")
    

    我的错误是假设我必须使用until 中的expected_conditions 类之一。

    感谢 Jonah 的提示和 Dmytro Serdiuk 的 an example

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-16
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      • 2016-12-29
      • 2012-04-07
      相关资源
      最近更新 更多