Как определить условный элемент «если существует» с помощью селена?

#python #selenium #selenium-webdriver

Вопрос:

Когда вы загружаете страницу со студентом, вам нужно нажать по крайней мере на два варианта (если они учились в средней школе, в одном учебном заведении). Но это не всегда так. Я хочу оговорить следующее:

 wait = WebDriverWait(driver, 2)

if not wait.until(EC.element_to_be_clickable((By.XPATH, "//td[text()='AC']/following-sibling::td/input"))):
    print('Cargando reporte...')
    time.sleep(6)
    driver.save_screenshot(r'C:UsersspvdaDesktop{}.-image.png'.format(i))
    driver.quit()   
else:
    ait.until(EC.element_to_be_clickable((By.XPATH, "//td[text()='AC']/following-sibling::td/input"))).click()
    print('Cargando reporte...')
    time.sleep(6)
    driver.save_screenshot(r'C:UsersspvdaDesktop{}.-image.png'.format(i))
    driver.quit()
 

Но это не работает, и вы получаете следующее: raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message: (Сообщение пустое).

Как это исправить?

Комментарии:

1. В этом случае попытка/Исключение будет «Лучшей практикой». Это заставляет вас обрабатывать различные ошибки так, как вам нравится

Ответ №1:

Вы можете использовать find_elements , чтобы иметь список, и можете проверить, если размер > 0, то сделайте что-нибудь >в противном случае сделайте что-нибудь еще.

 try:
    if(len(driver.find_elements(By.XPATH, "//td[text()='AC']/following-sibling::td/input"))) > 0:
        print("When AC is visible in UI")
        wait.until(EC.element_to_be_clickable((By.XPATH, "//td[text()='AC']/following-sibling::td/input"))).click()
        print('Cargando reporte...')
        time.sleep(6)
        driver.save_screenshot(r'C:UsersspvdaDesktop{}.-image.png'.format(i))
        driver.quit()
    else:
        print('Cargando reporte...')
        time.sleep(6)
        driver.save_screenshot(r'C:UsersspvdaDesktop{}.-image.png'.format(i))
        driver.quit()
except:
    print("Something went wrong")
    pass
 

Комментарии:

1. Первое условие обнаруживает кнопку, но не нажимает на нее.

2. потому что кода там нет, чтобы нажать, обновлено выше, пожалуйста, повторите попытку

3. Забудь об этом, добавил я в свой код. Ваш код верен. Спасибо