Почему в Python Selenium click () не работает, а send_keys ('\ n') работает? - PullRequest
1 голос
/ 20 октября 2019

У меня есть веб-страница с несколькими кнопками с одинаковым классом и именем, и при нажатии они просто исчезают и ничего не делают. Поэтому я сначала попробовал это, но это не сработало:

buttons = driver.find_elements_by_xpath('//*[@class="btn"]')
buttons[1].click()
buttons = driver.find_elements_by_xpath('//*[@class="btn"]')
buttons[2].click()
buttons = driver.find_elements_by_xpath('//*[@class="btn"]')
buttons[3].click()

А потом нашел решение с помощью:

buttons = driver.find_elements_by_xpath('//*[@class="btn"]')
buttons[1].send_keys('\n')

Я новичок в Python, поэтому кто-нибудь может объяснить мне, что этопричина не для работы с кликом, а с send_keys ('\ n')?

1 Ответ

0 голосов
/ 21 октября 2019

В зависимости от типа WebElement некоторые элементы не принимают клики, даже если веб-сайт намеревается их щелкнуть - вместо отправки ключей вы можете попробовать использовать функцию Javascript click(), чтобы проверить, работает ли она. Это немного более согласованно, чем отправка ключей, потому что вы все еще выполняете клик:

buttons = driver.find_elements_by_xpath('//*[@class="btn"]')

# click button using javascript
driver.execute_script("arguments[0].click();", buttons[1])

Причина, по которой нам нужно использовать Javascript, обычно связана с ограничением самой веб-страницы.

...