Проверьте наличие двух элементов, используя Python, Selenium - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь проверить наличие двух элементов (A, B) на веб-сайте. Что мне нужно, это нажать на элемент A, если он существует, если не идти вперед, и искать B и нажать на него, если он существует , Ниже приведена часть моего примера кода.

try:
        abc= WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#rso > div > div > div:nth-child(1) > div > div > h3 > a")))
    except NoSuchElementException:
        continue
    except TimeoutException:
        continue
    else:
        element.click()


try:
        element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#rso > div > div > div:nth-child(1) > div > div > h3 > a")))
    except NoSuchElementException:
        continue
    except TimeoutException:
        continue
    else:
        abc.click()
        time.sleep(randint(1, 15))


print('Process completed successfully')

Проблема, с которой я сталкиваюсь, заключается в том, что код ищет только первый элемент и не переходит к следующей попытке. Любой совет был бы великолепен.

1 Ответ

0 голосов
/ 06 сентября 2018

Попробуйте ниже щелкнуть первый элемент, а если он не найден, нажмите второй:

try:
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "first.element"))).click()
except TimeoutException:
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "second.element"))).click()

P.S. Замените "first.element", "second.element" реальными селекторами CSS

Если оба элемента могут отсутствовать на странице:

try:
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "first.element"))).click()
except TimeoutException:
    try:
        WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "second.element"))).click()
    except TimeoutException:
        print("Both elements not found")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...