Próbuję wybrać jakiś tekst (tj. Zaznacz go za pomocą kursora myszy) dla zautomatyzowanego testu. Chciałbym użyć Pythona i WebDriver, aby przejść do tego adresu URL: http://en.wikipedia.org / Wiki / WebDriver # Selenium_WebDriver i podświetlanie zdania drugiego w ramach pozycji "Selenium WebDriver" ("Selen WebDriver akceptuje polecenia (wysłane w Selenese, lub przez API klienta) i wysyła je do przeglądarki.").

Podstępna rzecz jest to, że miałem nadzieję, że można to zrobić bez użycia żadnych elementów, a ja próbowałem opracować sposób, aby kliknąć w lokalizacji określonej przez współrzędne X i Y, a następnie trzymaj przeprowadzkę do innej lokalizacji, określonej przez inny zestaw współrzędnych X i Y.

Od czytania, rozumiem, że nie można po prostu kliknąć obszaru strony przez współrzędne, ponieważ musisz określić element, więc można wykonać wybór tekstu tylko przy użyciu tylko jednego, zdalnego elementu (powiedzmy ". Mw-edytekcja> A ")? Myślałem, że może być możliwe, aby to zrobić, korzystając z elementu jako odniesienia i kliknięcie pewnej odległości od niego (tj. Kliknij Offset).

To właśnie próbowałem do tej pory, ale nie robi pracy:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Firefox()
actions = ActionChains(driver)
driver.get("http://en.wikipedia.org/wiki/WebDriver#Selenium_WebDriver")

the_only_element = ".mw-editsection>a"
element = driver.find_element_by_css_selector(the_only_element)

actions.move_to_element_with_offset(element,50,50)
actions.click_and_hold(on_element=None)
actions.move_by_offset(50, 50)
actions.release()
actions.perform()

Z tego, otrzymuję ten błąd:

WebDriverException: Message: u"'UnknownError: Cannot press more then one button or an already pressed button.' when calling method: [wdIMouse::down]" 

Tło:

Doceniam, że powyższy przykład jest trochę wymyślony, ale nie mogę ci zapewnić, że naprawdę próbuję przetestować. Właściwie to robię, pisze serię testów w Pythonie za pomocą WebDriver, aby przetestować nasz przeglądarkę dokumentów, a ja naprawdę muszę być w stanie podświetlić wiersz tekstu, ponieważ dodajesz komentarze do naszego systemu. Niestety, przeglądarka dokumentów nie pokazuje przesłanego dokumentu, tylko obraz go za pomocą jakiejś czarodzieja JavaScript. Strona dokumentu jest elementem, ale nie ma elementów do WebDriver, aby kliknąć na samej stronie.

Z tego powodu chcę być w stanie kliknąć i przytrzymać lokalizację na stronie, określając współrzędne (na początku zdania), utrzymuj przycisk myszy, gdy kurser myszy jest symulowany przenoszenie w prawo do drugiego zestawu współrzędnych (na końcu zdania), a następnie zwolnij przycisk.

TL; DR:

Czy można kliknąć i przeciągnąć z dowolnego punktu na stronie internetowej do drugiej, bez użycia elementu (inne niż działać jako odniesienie, z którego arbitralny punkt jest zdefiniowany jako przesunięcie)?

Jeśli nie, jakaś inna metoda może sugerować podświetlenie obszaru tekstu i mógłbyś podać przykład?

Dzięki!

4
Darren 29 listopad 2013, 18:39

2 odpowiedzi

Najlepsza odpowiedź

Myślę, że opracowałem to - na poniższe wydaje się działać, ale nie mogę tego wydawać, że puści! Myślę, że może to być aż do implementacji buggy .release () w wiązaniach Python dla WebDriver:

def click_and_drag(locator, x_from, y_from, x_to, y_to):
    element = driver.find_element_by_css_selector(locator)
    actions.move_to_element(element)
    actions.move_by_offset(x_from, y_from)
    actions.click_and_hold(on_element=None)
    actions.move_by_offset(x_to, y_to)
    actions.release(on_element=None)
    actions.perform()
0
Darren 2 grudzień 2013, 10:23

Czy próbowałeś z Drag_and_drop_by_offset ?

actions.drag_and_drop_by_offset(element, 50, 50)
actions.perform()
0
Santoshsarma 2 grudzień 2013, 07:22