【发布时间】:2021-09-28 00:58:52
【问题描述】:
在我的应用程序中,我可以预期会出现两个元素(a 或 b)之一。我目前有:
el1 = driver.find_element_by_id("a")
但是,我想做类似的事情:
el1 = driver.find_element_by_id("a" or "b")
这在硒中可能吗?如果有帮助,我正在 Python 中执行此操作。
【问题讨论】:
标签: python selenium automation appium
在我的应用程序中,我可以预期会出现两个元素(a 或 b)之一。我目前有:
el1 = driver.find_element_by_id("a")
但是,我想做类似的事情:
el1 = driver.find_element_by_id("a" or "b")
这在硒中可能吗?如果有帮助,我正在 Python 中执行此操作。
【问题讨论】:
标签: python selenium automation appium
简单直接的解决方案:
try:
# Look for first element
el1 = driver.find_element_by_id('a')
except selenium.common.exceptions.NoSuchElementException:
# Look for the second if the first does not exist
el1 = driver.find_element_by_id('b')
【讨论】:
在这种情况下你可以使用 xpath :
el1 = driver.find_element_by_xpath("//*[@id= 'a' or @id = 'b']")
我假设two tags in HTML有两个不同的ids,你可以像上面一样在xpath中写or条件。
更新:
请注意任何使用 android 应用程序实现此功能的人,语法是:
el1 = driver.find_element_by_xpath("/hierarchy/a" or "/hierarchy/b")
【讨论】:
el1 = driver.find_element_by_xpath("/hierarchy/a" or "/hierarchy/b")
el1 = driver.find_element_by_xpath("/hierarchy/a" or "/hierarchy/b") 仅在提供的元素为 a 时才有效。另外,这样的东西是否适用于 id 而不是 xpath?还是硒挑剔?
在纯 Python 中,您可以这样做:
el1 = driver.find_element_by_id("a") if driver.find_element_by_id("a") else driver.find_element_by_id("b") if driver.find_element_by_id("b") else None
【讨论】:
a 或 b 在 DOM 中不可用,OP 将得到 NoSuchElement 异常