0

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

<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类的列表,因此您无需谷歌。

4

2 回答 2

1

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

//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()!='']")))
于 2020-08-14T16:25:29.863 回答
0

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

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

我的错误是假设我必须expected_conditions使用until.

感谢 Jonah 的提示和 Dmytro Serdiuk的示例

于 2020-08-14T14:01:26.253 回答