Używając wersji Selenium w Pythonie, czy możliwe jest kliknięcie jakiegoś elementu w DOM i podanie współrzędnych, w których chcesz go kliknąć? Wersja Java ma metodę clickAt
, która faktycznie robi dokładnie to, czego szukam, ale nie może znaleźć odpowiednika w Pythonie.Selen - kliknij w określone miejsce
Odpowiedz
ja nie osobiście stosowali tę metodę, ale pominie kodu źródłowego selenium.py
Znalazłem następujące metody, które wyglądają tak, jakby by robić to, co chcesz - Wyglądają zawinąć 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,])
Pojawiają się w obiekcie selenu, a tutaj jest ich online API documentation.
Powód, dla którego się mylisz, to clickAt
to stara metoda v1 (Selenium RC).
WebDriver ma nieco inną koncepcję, od 'Actions'.
W szczególności, budowniczy "działań" dla powiązań Python live here.
Ideą polecenia clickAt
jest kliknięcie w określonym położeniu względnie na konkretny element.
To samo można uzyskać za pomocą narzędzia WebDriver, korzystając z narzędzia "Działania".
Mam nadzieję, że ten updated documentation może pomóc.
To powinno wystarczyć! Mianowicie musisz używać łańcuchów akcji z webdrivera. Gdy już masz taką instancję, po prostu rejestruj kilka akcji, a następnie zadzwoń pod numer perform()
, aby je wykonać.
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()
Ten ruszy myszką 5 pikseli w dół i 5 pikseli w prawo od lewego górnego rogu przycisk czuję się szczęśliwy. Wtedy będzie to click()
.
Zauważ, że musisz musi użyć perform()
. Inaczej nic się nie stanie.
- 1. Jak kliknij element w selen WebDriver użyciu JavaScript
- 2. Kliknij przycisk Kliknij w UICollectionView
- 3. Selen getText
- 4. backbone.js - Zarówno kliknij i kliknij dwukrotnie zdarzenie wyrzucenie na elemencie
- 5. Ogórek + selen w aplikacjach javascript
- 6. Kliknij środkowy przycisk kliknij wydarzenie
- 7. usuń określone znaki z NSString
- 8. Kliknij dwukrotnie wiersz DataGridView?
- 9. Kliknięcie linku używając selen przy użyciu Pythona
- 10. Selen: Ajax Testowanie
- 11. Selen Firefox Otwórz Timeout
- 12. Selen kliknięcie niewłaściwego elementu
- 13. Selen niespodziewanie mający problemy
- 14. Kliknij dwukrotnie w UITableViewCell
- 15. Selen: Znajdź URL bazowy
- 16. Znaleźć miejsce kursora w prostokącie
- 17. Jak korzystać z listy wyboru w selen?
- 18. Python testy selen utknie w urlopen
- 19. selen w trybie bezgłowe z Xvfb
- 20. Selen: Prześlij plik w Google Chrome
- 21. Selen - przewiń w dół rosnącą stronę
- 22. Co dokładnie robi ime() w selen?
- 23. jak sprawdzić atrybut stylu w selen IDE
- 24. Selen uzyskać wszystkie elementy w postaci
- 25. kliknięcie linku przez selen w pytonie
- 26. Jak działają wyrażenia regularne w selen?
- 27. Selen wyłącza wtyczki w profilu firefox
- 28. Kątomierz/selen: uruchom przeglądarkę w tle
- 29. jak zmienić użytkownika w selen z .net
- 30. Selen: nie można zlokalizować linku w tabeli
Świetne !! Do której klasy należą? – davids
Są w obiekcie selenu. Właśnie znalazłem dokumentację interfejsu API online - aktualizując odpowiedź. – Ewan
Jeszcze jedno pytanie. Jak właściwie to wykorzystujesz? Jestem przyzwyczajony do pracy z obiektami webdrivers, ale nigdy nie użyłem tego – davids