【问题标题】:How to locate the x, y coordinates of text on the screen?如何定位屏幕上文字的x、y坐标?
【发布时间】:2017-08-09 03:38:59
【问题描述】:

我正在尝试查找 Web 元素(在屏幕上打开的网页的一部分)的 x、y 坐标,并且正在对其运行一些使用 robotframework 的自动化测试。

我想为函数提供文本字符串,并获取返回的 (x, y) 坐标。

我不确定我是否可以在pyautogui 中执行此操作。

环境:Chrome / OS X

编辑:

我想知道我是否可以在这个库中使用locateOnScreen() 函数来定位文本,(但根据documentation,它似乎只适用于图像)?

【问题讨论】:

  • 请阅读How to Ask。请提供您尝试过的代码和执行结果,包括任何错误信息等。

标签: python robotframework ui-automation pyautogui


【解决方案1】:

Web 元素 具有属性 .location,它返回元素的 x 和 y 坐标的字典。

driver = webdriver.Chrome('/path/to/chromedriver')
elem = driver.find_element_by_xpath('//xpath_to_the_element')
loc = elem.location
print(loc)

上面的代码会返回类似:

{'x' : 123, 'y' : 234}

【讨论】:

  • 我实际上是在研究 selenium find_element_by_ 函数。看来我必须通过执行 driver.get("www.abc.com") 来启动一个新的 chrome 窗口。有没有办法在已经打开的 chrome 窗口上调用 find_element_by_ 函数?
  • @rocketfinger Selenium 将无法获得用户打开的浏览器的句柄,而不是使用 webdriver
  • 如果另一个窗口被 Selenium2Library 中的Open Browser 关键字打开怎么办? IE。它是由 webdriver 打开的,但不是通过那个 python 脚本打开的。
  • Selenium 只能访问它已经打开的窗口。
  • 这在技术上可以通过连接到 webdriver 的侦听端口来实现,Firefox 最高为 v47 - 即没有木偶;我现在正在做(在测试开发过程中节省了很多启动浏览器、登录等的时间)。仍然没有找到与其他代理浏览器(chrome)一起使用更大版本的方法。但这与原始问题无关。
猜你喜欢
  • 1970-01-01
  • 2017-05-23
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
相关资源
最近更新 更多