Selenium Python - Как мне заставить мою программу щелкнуть конкретный элемент, когда он появился? - PullRequest
1 голос
/ 31 января 2020

Я пытаюсь создать бота, который автоматически открывает мой сервер для меня. Проблема в том, что на этом сайте есть проверка личности. Когда количество людей в очереди меньше 300, появляется кнопка. Я хочу, чтобы мой бот нажимал эту кнопку, когда она появляется, но я не знаю, как это сделать.

Путь этой кнопки равен //*[@id="confirm"]

Ответы [ 3 ]

0 голосов
/ 31 января 2020
    # if not visible will raise a exception
    try:
        element = WebDriverWait(driver, 20).until(
        EC.visibility_of_element_located((By.ID, "elementID"))

        # click
        driver.find_element_by_id("elementID").click()
    except Exception:
        # do action if not visible

источник: https://selenium-python.readthedocs.io/waits.html

0 голосов
/ 31 января 2020

Если вы хотите нажать на элемент, тогда мы должны дождаться, пока элемент сможет получить щелчок. Таким образом, вы можете щелкнуть всякий раз, когда очередь меньше 300 в заданном периоде ожидания 40 секунд (для селена по умолчанию используется интервал опроса для условия ожидания каждые 500 миллисекунд)

from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver, 40).until(
EC.element_to_be_clickable((By.XPATH, "//*[@id="confirm"]")))
element.click()
0 голосов
/ 31 января 2020

Допустим, для создания очереди требуется 100 секунд, до тех пор вы можете подождать с помощью:

time.sleep(100)

Вы также можете сделать это через Selenium с помощью:

browser = webdriver.Chrome()
browser.implicitly_wait(100)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...