Невозможно щелкнуть координаты с помощью Selenium API для Python - PullRequest
0 голосов
/ 18 июня 2020

Я адаптировал свой код из этого и , который отвечает. Моя цель - щелкнуть элемент в определенных координатах. В качестве примера я буду использовать кнопку входа в StackOverflow.

Чтобы найти правильное положение элемента, я вставил это в консоль разработчика:

document.onmousemove = function(e){ var x = e.pageX; var y = e.pageY; console.log("x="+x+" y="+y); };

И я получил: x=1078 y=23. Вот код

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

driver = webdriver.Firefox()
driver.delete_all_cookies()
driver.set_window_size(1200, 900
driver.get('https://stackoverflow.com/')
time.sleep(5)

zero_elem = driver.find_element_by_tag_name('body')
x_body_offset = zero_elem.location["x"]
y_body_offset = zero_elem.location["y"]
assert x_body_offset == 0 and y_body_offset == 0
actions = ActionChains(driver)
actions.move_to_element_with_offset(zero_elem, 0, 0)

actions.move_by_offset(1078, 23).click().perform()  # exception!

В этом примере возникает сбой, вызывающий следующее исключение:

selenium.common.exceptions.MoveTargetOutOfBoundsException: Message: (0, -2404) is out of bounds of viewport width (1200) and height (826)

Во-первых, почему область просмотра имеет размер 1200x826? Я установил 1200x900. Во-вторых, почему в исключении написано: (0, -2404) is out of bounds? У меня зачет совсем другой! И assert заверяет меня, что элемент body находится на 0,0.

...