#python #selenium #webdriver
#python #селен #webdriver
Вопрос:
Мне было интересно, как имитировать нажатие кнопки на странице входа в систему с помощью Selenium. Когда я пытаюсь выполнить следующее, мне выдается сообщение об ошибке, в котором говорится, что кнопка недоступна для нажатия по указанным координатам (635, 353).
browser = webdriver.Chrome()
browser.find_element(By.XPATH, "//*[@id='signin_btn']").click()
Когда я пытаюсь использовать ActionChain, он возвращает веб-элемент (кнопку, на которую нужно нажать), а не щелчок.
action = ActionChains(browser)
action.click(on_element=browser.find_element(By.XPATH, "//*[@id='signin_btn']"))
Ответ №1:
Я сомневаюсь, что он возвращает экземпляр WebElement, а скорее экземпляр ActionChains.
Это связано с сигнатурой метода и позволяет связать некоторые действия. Вот click
метод:
def click(self, on_element=None):
"""
Clicks an element.
:Args:
- on_element: The element to click.
If None, clicks on current mouse position.
"""
if on_element:
self.move_to_element(on_element)
if self._driver.w3c:
self.w3c_actions.pointer_action.click()
self.w3c_actions.key_action.pause()
self.w3c_actions.key_action.pause()
else:
self._actions.append(lambda: self._driver.execute(
Command.CLICK, {'button': 0}))
return self
Вы можете видеть, что он возвращается self
.
Он не будет щелкать, пока вы не вызовете perform
.
action.click(on_element=el).perform()