Используя версию Selenium на Python, можно ли щелкнуть какой-либо элемент в DOM и указать координаты, куда вы хотите нажать? Версия Java имеет метод clickAt
, который фактически выполняет именно то, что я ищу, но не могу найти эквивалент в Python.Selenium - щелкните в определенном месте
ответ
Я лично не использовал этот метод, но, глядя через исходный код selenium.py
Я нашел следующие методы, которые выглядят как они будут делать то, что вы хотите - Они выглядят обернуть 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 (i.e. - 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 (i.e. - 10,20) of the mouse event relative to the element returned by the locator.
"""
self.do_command("doubleClickAt", [locator,coordString,])
Они появляются в объекте selenium, и вот их online API documentation.
Причина, по которой вы запутываетесь, это clickAt
- это старый метод V1 (Selenium RC).
WebDriver имеет несколько другую концепцию, 'Actions'.
В частности, строитель «Действия» для привязок Python живет here.
Идея команды clickAt
состоит в том, чтобы щелкнуть в определенном положении Относительно к определенному элементу.
То же самое можно сделать в WebDriver, используя конструктор «Действия».
Надеюсь, этот updated documentation может помочь.
Это должно быть сделано! А именно, вам нужно использовать цепочки действий из webdriver. После того, как у вас есть экземпляр этого, вы просто регистрируете кучу действий, а затем вызываете 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()
. Иначе ничего не произойдет.
- 1. Подменю в определенном месте
- 2. Позиция в определенном месте?
- 3. Сохранение XML в определенном месте
- 4. Создавать объект в определенном месте?
- 5. Округление UILabel в определенном месте
- 6. Поместите поп в определенном месте
- 7. PHP толчок в определенном месте
- 8. Добавление абзаца в определенном месте
- 9. Поместите JTextArea в определенном месте
- 10. Отключение HttpModule в определенном месте
- 11. Удаление элемента в определенном месте
- 12. Вставить текст в определенном месте
- 13. Запуск приложения в определенном месте
- 14. Вставка строки в определенном месте?
- 15. Найти TreeNode в определенном месте
- 16. Щелкните в любом месте, чтобы удалить класс
- 17. Щелкните в любом месте, чтобы ввести
- 18. щелкните в любом месте, чтобы скрыть ползунок
- 19. щелкните в любом месте, кроме указанного класса
- 20. Получение информации о определенном месте?
- 21. Добавление макета к другому макету в определенном месте, определенном ранее
- 22. Вставьте пробел в определенном месте в строке
- 23. Добавление узла в определенном месте в XML
- 24. Сохранить скриншот в Geomagic в определенном месте
- 25. Вставить в массив в определенном месте
- 26. Запись текста в файл в определенном месте
- 27. Как написать в определенном месте в файле
- 28. Вставить в определенном месте в Ember.Array Object
- 29. Сохранение диапазона в pdf в определенном месте
- 30. Вставьте узел в определенном месте в Ext.tree.panel
Отличный !! К какому классу они принадлежат? – davids
Они находятся в объекте селена. Я на самом деле только что нашел их документацию по API онлайн - обновить ответ. – Ewan
Просто еще один вопрос. Как вы на самом деле используете это? Я привык работать с объектами webdrivers, но никогда не использовал этот – davids