«Non html button» не активируется при помощи селина - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь использовать python и selenium, чтобы щелкнуть по элементу без успеха, так же, как когда я хочу щелкнуть по кнопке.

python --version
Python 2.7.16

print selenium.__version__
3.141.0

chromedriver --version
ChromeDriver 2.36

chromium-browser --version
Chromium 65.0.3325.181

Это тег:

<a data-fblog="the_button" href="javascript:" id="the_btn" class="the_btn" title="Goto">Goto</a>

(это явно не определяется как кнопка)

, и это часть Python, ответственная за щелчок в этом теге:

chrome_options = Options()
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-gpu")
driver = webdriver.Chrome('PATHTOCRHROMEDRIVER/chromedriver',options=chrome_options)
driver.get('https://www.urltogetinfo.com')

try:
    the_button = driver.find_element_by_id('the_btn')
    the_button.click()
    #Also tried these aproaches without sucess:
    #the_button = driver.find_element_by_id('the_btn').send_keys(Keys.RETURN)
    #the_button = driver.find_element_by_id('the_btn').send_keys(Keys.ENTER)
    sleep(5)
except:
    print("Problem clicking the button")
    #would like to log the exception here
    pass

Что я мог сделать неправильно?

Ответы [ 2 ]

1 голос
/ 08 октября 2019

Вы можете попытаться вызвать WebDriverWait для существования элемента, а затем щелкнуть здесь с помощью Javascript.

the_button = WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.ID, "the_btn")))
driver.execute_script("arguments[0].click();", the_button)
1 голос
/ 08 октября 2019

Попробуйте следующие параметры

  1. Попробуйте добавить неявное ожидание после инициализации веб-драйвера или перед щелчком по элементу. driver.implicitly_wait(15)
  2. Попробуйте добавить явное ожидание для кнопки

WebDriverWait(driver, 3).until(EC.presence_of_element_located((By.ID, "the_btn")))

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