【问题标题】:How to get screen coordinate of a element in selenium? [Python]如何获取硒元素的屏幕坐标? [Python]
【发布时间】:2021-04-23 16:59:27
【问题描述】:

我想知道如何根据屏幕分辨率而不是浏览器窗口大小获取元素的坐标,我已经尝试过了(代码块),但它根据浏览器窗口而不是提供坐标屏幕

element = driver.find_element_by_xpath("//*[@id='search_form_input_homepage']")
print(element.location)

我可以使用任何替代品吗?

解释我的意思的可怕尝试:

注意:driver.execute_script 是不允许的,因为该网站有机器人拦截器 :(

【问题讨论】:

标签: python python-3.x selenium resolution pyautogui


【解决方案1】:

您可以使用.size.location 获取尺寸。

试试这个:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep, strftime

url = "some url"

webdriver = webdriver.Chrome()
webdriver.get(url)


webdriver.fullscreen_window()

cookies = webdriver.find_element_by_xpath("xome xpath")

location = cookies.location
size = cookies.size
w, h = size['width'], size['height']

print(location)
print(size)
print(w, h)

【讨论】:

  • 抱歉,正如我在问题中已经说过的,.location 不起作用,因为坐标是基于浏览器窗口而不是屏幕
  • 您可以使用webdriver.maximize_window()最大化屏幕
  • 不最大化窗口最大化窗口?这仍然会,因为浏览器有一个上部选项卡菜单并且也有任务栏,所以没有给出正确的坐标
  • 谢谢你的回答,做了一些调整就像一个魅力:)
  • :) 如果我可以问,有什么调整
【解决方案2】:
print(element.location_once_scrolled_into_view)

如果这有帮助,请尝试,更多可用的方法如 size rect 等可以在以下位置找到:

https://www.selenium.dev/selenium/docs/api/py/webdriver_remote/selenium.webdriver.remote.webelement.html#module-selenium.webdriver.remote.webelement

【讨论】:

  • 一分钟,让我试试
  • 不,抱歉,该位置仍然基于浏览器窗口,而不是屏幕,并没有解决问题
  • @CoffeeGuy 浏览器窗口是什么意思?意味着它只显示视口中的元素?
  • 我想要的是元素的坐标,根据浏览器窗口,例如。如果我在浏览器选项卡的顶部有一些东西,则元素位置将根据浏览器窗口显示(0y,因为它在顶部)而不是实际位置,应该根据屏幕显示
  • wdym?我没有说 selenium 不应该访问浏览器外的屏幕,一分钟,让我截图并用油漆编辑它,以直观地表达我想说的内容
猜你喜欢
  • 2013-03-20
  • 2011-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 1970-01-01
  • 2021-10-22
相关资源
最近更新 更多