Mam mały skrypt w selenie do automatyzacji jednej strony internetowej. Stworzyłem również funkcję symulującą ruch myszy, aby generować wiele ruchów myszy, co imituje ludzkie zachowanie, zamiast przeskakiwać z jednego selektora do drugiego. Uruchamiam to w nowym wątku, ale po pierwszej itteracji rzuca selenium.common.exceptions.MoveTargetOutOfBoundsException: Message: move target out of bounds.
Wdzięczni za pomoc :)
Klasa facebook ():
def __init__(self, login, password, counter=0):
self.login = login
self.password = password
self.browser = webdriver.Chrome("D:\selenium\chromedriver.exe")
self.browser.get("https://www.facebook.com/")
self.browser.set_window_size(1400,600)
self.action = ActionChains(self.browser)
self.thread()
def move_mouse(self):
actions = ActionChains(self.browser)
while True:
delay = random.uniform(0.1,0.3)
x = random.randint(400,900)
y = random.randint(100,400)
actions.move_by_offset(x,y).perform()
print("x:"+str(x)+" y:"+str(y))
time.sleep(2)
def thread(self):
newThread = threading.Thread(target=self.move_mouse, daemon=True)
newThread.start()
1 odpowiedź
Uruchamiając ten kod, ostatecznie przejdziesz do pozycji max x, y i spróbujesz wyjść poza granice okna. Zrobiłem kilka badań i odkryłem, że możesz przejść do określonej pozycji za pomocą move_to_element_with_offset
, gdy element jest tagiem body.
Oto mój dowód słuszności:
def move_mouse_to_random_position(driver):
max_x, max_y = driver.execute_script("return [window.innerWidth, window.innerHeight];")
body = driver.find_element_by_tag_name("body")
actions = ActionChains(driver)
x = random.randint(0, max_x)
y = random.randint(0, max_y)
actions.move_to_element_with_offset(body, x, y)
actions.perform()
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.