Селен – нажмите в определенном положении

Используя версию Selenium на Python, можно ли щелкнуть какой-либо элемент в DOM и указать координаты, в которые вы хотите нажать? Версия Java имеет метод clickAt , который фактически выполняет именно то, что я ищу, но не могу найти эквивалент в Python.

3 Solutions collect form web for “Селен – нажмите в определенном положении”

Это должно сделать это! А именно, вам нужно использовать цепочки действий из webdriver. После того, как у вас есть экземпляр этого, вы просто регистрируете кучу действий, а затем вызываете функцию execute perform() для их выполнения.

 from selenium import webdriver driver = webdriver.Firefox() driver.get("http://www.google.com") el=driver.find_elements_by_xpath("//button[contains(string(), 'Lucky')]")[0] action = webdriver.common.action_chains.ActionChains(driver) action.move_to_element_with_offset(el, 5, 5) action.click() action.perform() 

Это приведет к перемещению мыши на 5 пикселей вниз и 5 пикселей справа от верхнего левого угла кнопки. Мне повезло . Затем он click() .

Обратите внимание, что вы должны использовать perform() . Иначе ничего не произойдет.

Причина, по которой вы запутались, – это clickAt , это старый метод v1 (Selenium RC).

У WebDriver есть несколько другая концепция «Действия» .

В частности, здесь работает строитель «Действия» для привязок Python.

Идея команды clickAt состоит в том, чтобы щелкнуть по определенной позиции относительно определенного элемента.

То же самое можно сделать в WebDriver, используя конструктор «Действия».

Надеюсь, эта обновленная документация может помочь.

Я лично не использовал этот метод, но просматриваю исходный код selenium.py Я нашел следующие методы, которые выглядят так, как будто они будут делать то, что вы хотите. Они смотрят на wrap clickAt :

 def click_at(self,locator,coordString): """ Clicks on a link, button, checkbox or radio button. If the click action causes a new page to load (like a link usually does), call waitForPageToLoad. 'locator' is an element locator 'coordString' is specifies the x,y position (ie - 10,20) of the mouse event relative to the element returned by the locator. """ self.do_command("clickAt", [locator,coordString,]) def double_click_at(self,locator,coordString): """ Doubleclicks on a link, button, checkbox or radio button. If the action causes a new page to load (like a link usually does), call waitForPageToLoad. 'locator' is an element locator 'coordString' is specifies the x,y position (ie - 10,20) of the mouse event relative to the element returned by the locator. """ self.do_command("doubleClickAt", [locator,coordString,]) 

Они появляются в объекте selenium, и вот их онлайн-документация API .

  • Автоматизация действий браузера - нажатие на кнопки кнопки «Ошибка» - «Нажмите« Успешно », но« Ошибка загрузки ». ..»
  • Selenium дает имя файла при загрузке
  • Firefox + Selenium в python: как интерактивно получить элемент html?
  • Как использовать селен вместе со скрипом для автоматизации процесса?
  • Экспортировать тест как питон из Selenium IDE
  • Поиск xpaths на страницах с запущенным скриптом
  • загрузка файлов из полей Filetype?
  • Как найти ввод текста по имени с помощью Selenium WebDriver?
  • Python - лучший язык программирования в мире.