У меня проблема, когда я захожу на сайт, если хочу проверить, отображается ли элемент и включен ли он.Если это так, я хочу что-то напечатать.Если элемент не отображается и не включен, я хочу проверить наличие нового элемента, отображается ли этот элемент, если хотите что-то напечатать.Я надеюсь, что вы поняли.
При посещении веб-сайта и если первый оператор IF НЕ обнаруживается / отображается, он выдает ошибку и вместо перехода к следующему оператору If.
ОШИБКА:
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: //*[@id="errorLongContent"]
Я уже пытался использовать команду try, ожидаем и изменил выражение if на elif.
Я надеюсь, что кто-то может мне помочь.
from selenium import webdriver
from selenium.webdriver import Firefox
from selenium.webdriver.firefox.options import Options
# Setup browser for
options = Options()
profile = webdriver.FirefoxProfile()
driver = Firefox(executable_path='geckodriver', options=options, firefox_profile=profile)
driver.get("https://agar.io")
#Xpaths
PLAY_BUTTON_XPATH = '//*[@id="play"]'
PROXY_DENIES_CONNECTION = '//*[@id="errorLongContent"]'
TIMEOUT_XPATH1 = '//*[@id="errorTryAgain"]'
#checking for error
def mainfunction():
while True:
print("Starting")
if driver.find_element_by_xpath(PROXY_DENIES_CONNECTION).is_enabled() and driver.find_element_by_xpath(
PROXY_DENIES_CONNECTION).is_displayed():
print("Proxy denies connection")
driver.quit()
if driver.find_element_by_xpath(TIMEOUT_XPATH1).is_enabled() and driver.find_element_by_xpath(
TIMEOUT_XPATH1).is_displayed():
print("Time out detected")
driver.quit()
if driver.find_element_by_xpath(PLAY_BUTTON_XPATH).is_enabled() and driver.find_element_by_xpath(
PLAY_BUTTON_XPATH).is_displayed():
print("Agar.io server is loaded")
break
else:
continue
mainfunction()
РЕДАКТИРОВАТЬ: Попробуйте и исключите
def mainfunction():
while True:
print("Starting")
try:
if driver.find_element_by_xpath(PROXY_DENIES_CONNECTION).is_enabled() and driver.find_element_by_xpath(
PROXY_DENIES_CONNECTION).is_displayed():
print("Proxy denies connection")
driver.quit()
except:
continue
try:
if driver.find_element_by_xpath(TIMEOUT_XPATH1).is_enabled() and driver.find_element_by_xpath(
TIMEOUT_XPATH1).is_displayed():
print("Time out detected")
driver.quit()
except:
continue
try:
if driver.find_element_by_xpath(PLAY_BUTTON_XPATH).is_enabled() and driver.find_element_by_xpath(
PLAY_BUTTON_XPATH).is_displayed():
print("Agar.io server is loaded")
break
except:
continue
Когда я запускаю его, он запускается в бесконечной циклической печати, только начиная ...