#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. Забудь об этом, добавил я в свой код. Ваш код верен. Спасибо