如何在Selenium Python中找到正确的元素位置

时间:2019-04-16 15:52:28

标签: python selenium

我试图在硒中找到元素的正确位置,但这给我带来了一些麻烦,这是我的代码


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

但是我不明白为什么它返回的位置不同于正确的元素位置

1 个答案:

答案 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向我提出了解决方案。

注意:此解决方案仅在最大化浏览器窗口时有效