Python Selenium - скрытый фрейм, который иногда появляется с утверждением java-скрипта
У меня есть уведомление, которое появляется пару раз в неделю на этом веб-сайте, который я очищаю. И я не могу обойтись без этого.
Я могу запустить код.
el = driver.find_element_by_xpath("//input[@id='btnRead']")
driver.execute_script("arguments[0].click();", el)
Это очищает его, но если я оставлю это в своем коде, это не даст мне исключения такого элемента. Событие, если я попытаюсь обернуть его в try/catch так.
from selenium.common.exceptions import NoSuchElementException
try:
el = driver.find_element_by_xpath("//input[@id='btnRead']")
driver.execute_script("arguments[0].click();", el)
except NoSuchElementException:
print(nonefound)
sleep(5)
driver.quit()
Это также очищает его, если он существует, но если нет, ошибка. Я предполагаю, что делаю что-то не так, но я пробовал несколько разных версий этого, и я всегда получаю сообщение об ошибке, из-за которой окна зависают и останавливается выполнение остальной части скрипта.
Любые идеи были бы отличными.
2 ответа
Вы можете проверить длину элемента, если хотите продолжить свои скрипты.
Если длина элементов больше 0, произойдет щелчок.
if len(driver.find_elements_by_xpath("//input[@id='btnRead']"))>0 :
el = driver.find_element_by_xpath("//input[@id='btnRead']")
driver.execute_script("arguments[0].click();", el)
else:
print("nonefound")
Или побудить WebDriverWait
() а также visibility_of_element_located
()
try:
el = WebDriverWait(driver,5).until(EC.visibility_of_element_located(("//input[@id='btnRead']")))
driver.execute_script("arguments[0].click();", el)
except NoSuchElementException:
print("nonefound")
Вам необходимо импортировать следующие библиотеки.
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
Возможно ли другое исключение, кроме NoSuchElementException
. "Повешение" могло быть отTimeoutException
. Попробуйте напечатать исключение следующим образом:
from selenium.common.exceptions import NoSuchElementException
try:
el = driver.find_element_by_xpath("//input[@id='btnRead']")
driver.execute_script("arguments[0].click();", el)
except Exception as e:
print(e)
sleep(5)
driver.quit()