оператор if с xpath в качестве выражения - PullRequest
0 голосов
/ 18 января 2019

Мне нужно выполнить какой-то код, только если данный путь 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 голосов
/ 18 января 2019

Если вы хотите проверить существование элемента без обработки исключений, попробуйте использовать 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 блоки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...