Pra*_*rab 1 python selenium expected-condition
wait = (driver, 10)
wait.until(EC.presence_of_element_located((By.XPATH, '//td[@class="blah blah blah"]')))
wait.until(EC.visibility_of_element_located((By.XPATH, '//h1[text() = "yo yo"]')))
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以将这两个条件组合成一行,或者以任何方式表明如果这两个条件都为真,那么在 Selenium、Python 中只有 click() 。
小智 5
我遇到了同样的问题并找到了答案!您可以使用它EC.all_of(*expected_conditions)来检查多个预期条件,就像逻辑 AND 一样,或者EC.any_of(*expected_conditions)检查逻辑 OR。
所以代码会是这样的:
WebDriverWait(driver, 5).until(
EC.all_of(
EC.presence_of_element_located((By.ID, "Example")),
EC.visibility_of_element_located((By.ID, "Example"))
)
)
Run Code Online (Sandbox Code Playgroud)
它返回一个 webdriver 元素列表,因此如果您想单击某个元素,则必须通过索引选择它,并将其添加[i].click()到末尾。
这也意味着,如果您想单击正在检查的元素之外的第三个元素,您还必须将其添加到检查中,并选择它。最后会是这样的:
WebDriverWait(driver, 5).until(
EC.all_of(
EC.presence_of_element_located((By.ID, "Example")),
EC.visibility_of_element_located((By.ID, "Example")),
EC.presence_of_element_located((By.ID, "Clickable"))
)
)[2].click()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3400 次 |
| 最近记录: |