使用xpath作为表达式的if语句

时间:2019-01-18 08:26:18

标签: python selenium selenium-webdriver xpath

仅当给定的x路径存在时,我才需要执行一些代码,如果不存在,则需要寻找其他路径,然后执行一些代码。

我试图获得相同的信息,但是信息的结构发生了变化。

if driver.find_element_by_xpath("//th[contains(text(),'jakes')]/following-sibling::td/span/span"):
    extractBsr = driver.find_element_by_xpath("//th[contains(text(),'jakes')]/following-sibling::td/span/span").text.split(' ')
    splitBr = extractBsr[0].split("#")
    splitBrComma = splitBsr[1].strip(',')
    br = int(splitBsrComma)
    if br < 3000:
        asin.append(x)
elif driver.find_element_by_xpath("//li[@id='jakesEL']"):
    print(driver.find_element_by_xpath("//li[@id='jakeEL']").text)

当我在第一个xPath不存在的页面上时,它正在评估xPath并抛出错误。

构造它的正确方法是什么。

1 个答案:

答案 0 :(得分:3)

如果要在不进行异常处理的情况下检查元素的存在,请尝试使用find_elements...代替find_element...

if driver.find_elements_by_xpath("//th[contains(text(),'jakes'))]/following-sibling::td/span/span"):
    # In case of empty list you'll get False, otherwise True
elif driver.find_elements_by_xpath("//li[@id='jakesEL']"):
    # The same here

您还可以尝试使用try / except NoSuchElementException块处理异常