我试图在硒中找到元素的正确位置,但这给我带来了一些麻烦,这是我的代码
from selenium import webdriver
from pynput.mouse import Button, Controller as MouseController
mouse = MouseController()
driver = webdriver.Chrome()
driver.maximize_window()
driver.set_page_load_timeout(30)
driver.get("https://stackoverflow.com/")
element = driver.find_element_by_xpath('//*[@id="mainbar"]/div[1]/h1')
x, y = element.location["x"], element.location["y"]
mouse.position = x, y
但是我不明白为什么它返回的位置不同于正确的元素位置
答案 0 :(得分:0)
Pynput将根据屏幕大小确定绝对坐标,而您从硒中获得的坐标是相对于浏览器窗口的。
为了解决这个问题,您需要在计算y坐标时考虑浏览器导航栏的大小:
browser_navigation_panel_height = driver.execute_script('return window.outerHeight - window.innerHeight;')
x, y = element.location["x"], element.location["y"] + browser_navigation_panel_height
这个post向我提出了解决方案。
注意:此解决方案仅在最大化浏览器窗口时有效