Я пытаюсь войти на веб-сайт в веб-сайт, чтобы оставить его содержимое с помощью Selenium. На сайте есть виртуальная клавиатура, где пользователь вводит пароль, и я хочу имитировать щелчок на этой клавиатуре.Python Selenium - Найти и щелкнуть элемент по названию
Осматривая сайт, это та часть, где генерируется клавиатура (положение каждого ключа генерируется случайным образом с помощью JavaScript, но эта часть в порядке):
<div class="password-buttons">
<button class="button orange rounded" onclick="AddPsitions('8|9'); return false;" title="5 ou 3">
<span class="login-number">5</span>
<span class="login-or">ou</span>
<span class="login-number">3</span>
</button>
<button class="button orange rounded" onclick="AddPsitions('6|7'); return false;" title="8 ou 2">
<span class="login-number">8</span>
<span class="login-or">ou</span>
<span class="login-number">2</span>
</button>
<button class="button orange rounded" onclick="AddPsitions('4|5'); return false;" title="0 ou 6">
<span class="login-number">0</span>
<span class="login-or">ou</span>
<span class="login-number">6</span>
</button>
Для имитации щелчок я делаю следующее (я также попытался "// * [@ Title = '0 Ou 6']" без ''):
browser.find_element_by_xpath(".//*[@title='0 ou 6']").click()
Но я получаю эту ошибку:
Traceback (most recent call last):
File "webScrap_Rico.py", line 59, in <module>
browser.find_element_by_xpath(a).click()
File "/home/luciano/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 293, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "/home/luciano/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 752, in find_element
'value': value})['value']
File "/home/luciano/.local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute
self.error_handler.check_response(response)
File "/home/luciano/.local/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidSelectorException: Message: {" errorMessage":"Unable to locate an element with the xpath expression \".//*[@title='0 ou 6']\" because of the following error:\nError: TYPE_ERR: DOM XPath Exception 52","request":{"headers":{"Accept":"application/json","Accept-Encoding":"identity","Connection":"close","Content-Length":"109","Content-Type":"application/json;charset=UTF-8","Host":"127.0.0.1:60775","User-Agent":"Python-urllib/2.7"},"httpVersion":"1.1","method":"POST","post":"{\"using\": \"xpath\", \"sessionId\": \"8ddb4f90-f6e6-11e6-9eb0-4ba40f4453e7\", \"value\": \"\\\".//*[@title='0 ou 6']\\\"\"}","url":"/element","urlParsed":{"anchor":"","query":"","file":"element","directory":"/","path":"/element","relative":"/element","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/element","queryKey":{},"chunks":["element"]},"urlOriginal":"/session/8ddb4f90-f6e6-11e6-9eb0-4ba40f4453e7/element"}}
Я видел эти опции здесь: Find and click element by title Python Selenium
Что я здесь отсутствует?
Я рассматриваю этот вопрос об изменении кнопок каждый раз. В любом случае, я пробовал свой путь и получил эту ошибку: [...] selenium.common.exceptions.InvalidElementStateException: Сообщение: {"errorMessage": "SyntaxError: DOM Exception 12" [...] –
Но я попробовал другой подход : 'buttons = browser.find_elements_by_xpath (" // button [@ class = 'button orange rounded'] ")' и я могу найти кнопки, но теперь я получил эту ошибку: 'selenium.common.exceptions.ElementNotVisibleException: Сообщение: {"errorMessage": "Элемент в настоящее время не видим и не может быть обработан". Любые мысли по этому поводу? –
@lucianoaraujo Отредактировал свой ответ. Кстати, кнопка xpath '' // [@ class = 'button orange rounded'] "' не находит одну из кнопок. – Guy