Возможность выбрать "Мне повезет", но не могу щелкнуть по нему - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь написать простую программу, чтобы открыть Chrome, зайти в Google и нажать «Мне повезет».Я вижу, что он действует так, как будто курсор находится над значком, но не выполняет щелчок.

driver.get("https://www.google.com")
element = WebDriverWait(driver, 20) \
    .until(EC.visibility_of_element_located((By.ID, "gbqfbb")))
element.click()

В коде нет ошибок, но он не щелкает элемент.

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Я тоже не могу найти этот идентификатор.

вот что у меня получилось с помощью css_selector

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from appium.webdriver.common.mobileby import, By
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()

driver.get("https://www.google.com")
element = WebDriverWait(driver, 20) \
    .until(EC.visibility_of_any_elements_located((By. CSS_SELECTOR, '[name="btnI"][type="submit"]')))[0]
element.click()

Я предлагаю использовать visibility_of_any_elements_located сверх visibility_of_element_located. Причина в том, что селектор находит два элемента. Один видимый, а другой нет.

При использовании visibility_of_element_located он будет использовать find_element и получит элемент, который не виден.

При использовании visibility_of_any_elements_located он будет использовать find_elements и получит оба элемента. он будет проходить по всем элементам и, если один или несколько будут видны, сразу же вернет его.

0 голосов
/ 28 мая 2019

Где вы взяли этот идентификатор?Когда я захожу на сайт, я не вижу элемента с таким идентификатором.Возможно, у Google есть какой-то способ манипулировать этим, чтобы людям было сложнее автоматизировать этот процесс.Возможно, Google не хочет, чтобы вы это делали.

В любом случае, вы должны иметь возможность выбрать элемент другим способом:

driver.get("https://www.google.com")
element = WebDriverWait(driver, 20) \
    .until(EC.visibility_of_element_located((By. CSS_SELECTOR, '[jsaction="sf.lck"]')))
element.click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...