Как применить несколько условных операторов в селене webdriver python - PullRequest
0 голосов
/ 16 февраля 2020

Я новичок в Selenium, я пытаюсь найти элемент контактной информации на странице и щелкнуть его, если он существует. Много раз, что происходит, элемент находится во всех заглавных буквах, таких как CONTACT, иногда Contact, а иногда contact. Поэтому я сохранил эти случаи в переменной и использую find_element_by_partial_link_text, чтобы найти нужный элемент и щелкнуть по нему. Я использую обработку исключений (попробуйте и за исключением), и если l oop, чтобы проверить каждое условие. Это мой код:

from selenium import webdriver
import time
from selenium.common.exceptions import NoSuchElementException, StaleElementReferenceException

browser = webdriver.Chrome()
browser.implicitly_wait(30)
browser.maximize_window()

ab = 'Contact'
bc = 'CONTACT'
cd = 'contact'

browser.get('https://www.dominos.co.in/store-location/pune')

try:
    if browser.find_element_by_partial_link_text(ab).is_displayed():
        browser.find_element_by_partial_link_text(ab).click()

    elif browser.find_element_by_partial_link_text(bc).is_displayed():
        browser.find_element_by_partial_link_text(bc).click()

    elif browser.find_element_by_partial_link_text(cd).is_displayed():
        browser.find_element_by_partial_link_text(cd).click()

except NoSuchElementException:
    print("No such element found")
    browser.close()

Так что, если элемент Contact присутствует на любой веб-странице, этот код может щелкнуть по нему, но если присутствуют два других элемента, он переходит непосредственно в except и печатает No such element found. Если бы вы, ребята, могли бы помочь мне справиться с этим сценарием, я был бы очень признателен:)

Ответы [ 2 ]

1 голос
/ 16 февраля 2020

Используйте xpath с translate(), чтобы игнорировать регистр текста в html. Вы также можете использовать find_elements, чтобы избежать try except:

elements = browser.find_elements_by_xpath('//a[translate(text(),"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz") = "contact"]')
if elements and elements[0].is_displayed():
    elements[0].click()
1 голос
/ 16 февраля 2020

Попробуйте использовать функции translate () в xpath, эти функции помогут вам справиться с чувствительностью к регистру.

Надеюсь, это поможет.

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