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()
0
m3fju96 15 grudzień 2019, 19:26

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()
0
RafalS 17 grudzień 2019, 20:14
To są przesunięcia, nie? Przesunięcie „0,0” w ogóle nie poruszy myszką. Dokumenty: „Przesuwa mysz do określonego przesunięcia ostatnich znanych współrzędnych myszy”. Ujemny X jest pozostawiony, ujemny Y jest na górze.
 – 
pcalkins
17 grudzień 2019, 02:52
Tak, masz rację. Poszedłem na skróty, zły. Zobacz edytowany post.
 – 
RafalS
17 grudzień 2019, 20:03