对不起,如果我问一个重复/愚蠢的问题。我对如何确定某个元素是否存在感到困惑。错误:如果您运行以下代码,则会弹出“找不到ID“ smc””。
if driver.find_element_by_id("smc"):
print("Yes")
else:
print("No")
以下代码将起作用:
try:
verification = driver.find_element_by_id("smc")
except NoSuchElementException:
print("No exits")
登录页面后,它将输入以下选项之一。如果页面中的一个页面具有“其自己的元素”,则要相应地进行下一步。
1.1 page 1
-How to verify: driver.find_element_by_id("smc")
-Next step: func1()
1.2. page 2
-How to verify: driver.find_element_by_id("editPage")
-Next step: print("You need retry later") and exit the code
1.3. page 3
-How to verify: driver.find_element_by_id("cas2_ilecell")
-Next step: func2()
我如何完成任务?当我尝试使用“ if”时,它不起作用。...
非常感谢您。
答案 0 :(得分:1)
您在问题中写了解决方案本身。如果WebDriver无法使用给定的定位器查找元素,则抛出NoSuchElementException
,并且您需要使用try-except来处理它,如果您希望代码转到备用路径。
如果您不想处理异常,则可以使用的其他选项是driver.find_elements
。它返回匹配定位器的元素列表,如果找不到则返回一个空列表。所以你会做类似-
count = len(driver.find_elements_by_id('some_id'))
if count == 0:
//element was not found.. do something else instead
答案 1 :(得分:1)
尝试替换
if driver.find_element_by_id("smc")
使用
if driver.find_elements_by_id("smc")
答案 2 :(得分:0)
您可以编写自己的方法来检查元素是否存在(例如Java):
public boolean isExist(WebDriver driver, By locator) {
try {
return driver.findElement(locator) != null;
} catch (WebDriverException | ElementNotFound elementNotFound) {
return false;
}
}
在python中,可能看起来像(不确定!)这样:
def isExist(driver, by, locator):
try:
return driver.find_element(by, locator) is None
except NoSuchElementException:
return False
或
def isExist(driver, id):
try:
return driver.find_element_by_id(locator) is None
except NoSuchElementException:
return False
并使用它:
if isExist(driver, "smc")
fun1()
答案 3 :(得分:0)
根据您的问题来确定三个选项并相应地运行下一步,您可以使用以下解决方案:
您可以将 function 编写为test_me()
,它将参数作为元素的id
并提供如下状态:
def test_me(myString):
try:
driver.find_element_by_id(myString)
print("Exits")
except NoSuchElementException:
print("Doesn't exit")
现在,您可以在代码中的任何位置调用函数 test_me()
,如下所示:
test_me("smc")
#or
test_me("editPage")
#
test_me("cas2_ilecell")