Как проверить, отображается ли элемент на следующей странице или нет? - PullRequest
0 голосов
/ 08 июля 2019

Я хочу проверить, отображается ли кнопка отправки Google на следующей странице или нет.Если он не отображается, извлеките какой-либо текст или закройте браузер.

Я попытался использовать элемент WebDriverWait с меньшим количеством секунд, чтобы быстрее получить результат.Но все равно требуется 3–4 минуты, чтобы выдать исключение.

driver.get("https://www.google.com/")
driver.maximize_window()

driver.find_element_by_name("q").send_keys("New york")
driver.find_element_by_name("q").send_keys(Keys.ENTER)
sleep(2)
print("System in 2 seconds sleep mode.")

before_Btn_Check_time = datetime.now()
print(before_Btn_Check_time)

wait = WebDriverWait(driver, 0)

try:
    ui.WebDriverWait(driver, 0).until(ec.presence_of_element_located(
        driver.find_element_by_xpath(
            "//*[@id='tsf']/div[2]/div/div[3]/center/input[1]"
        )
    ))

    sleep(1)
    print("System in 1 seconds sleep mode.")
    print("Still on the same page..!")
except NoSuchElementException as e:
    print("No Google Search button was found" + str(e))

Ожидаемый результат - получить сообщение об ошибке менее чем за 10 секунд, если кнопка не отображается на следующей странице.

1 Ответ

0 голосов
/ 08 июля 2019

Использование implicitly_wait и WebDriverWait может привести к непредсказуемому поведению.

Вы устанавливаете WebDriverWait в качестве времени ожидания 0, но driver.find_element_by_xpath использует implicitly_wait время ожидания.Поиск элемента будет выполнен до этого времени ожидания.

На самом деле, presence_of_element_located() должен получить By в качестве параметра, а не WebElement.Правильное использование:

WebDriverWait(driver, 0).until(ec.presence_of_element_located((By.XPATH, "//*[@id='tsf']/div[2]/div/div[3]/center/input[1]")))

Но применима та же причина, он будет искать элемент внутри.

В качестве примечания, implicitly_wait не повлияет на driver.get(), используйтеdriver.set_page_load_timeout().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...