猿问

硒:使用“ if”来确定元素是否存在时出错

很抱歉,如果我问一个重复/愚蠢的问题。我对如何确定某个元素是否存在感到困惑。错误:如果您运行以下代码,则会弹出“找不到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()

我该如何完成任务?当我尝试使用“如果”,它不能工作...。


慕的地10843
浏览 153回答 3
3回答

一只名叫tom的猫

您在问题中写了解决方案本身。NoSuchElementException如果WebDriver不能使用给定的定位器找到该元素,则抛出该异常,并且您需要使用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

慕容708150

尝试更换if driver.find_element_by_id("smc")和if driver.find_elements_by_id("smc")

LEATH

根据您的问题来确定三个选项并相应地运行下一步,您可以使用以下解决方案:您可以编写一个函数,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")#ortest_me("editPage")#test_me("cas2_ilecell")
随时随地看视频慕课网APP

相关分类

Python
我要回答