【问题标题】:How to determine coordinates of an element with Watir Webdriver?如何使用 Watir Webdriver 确定元素的坐标?
【发布时间】:2017-07-31 22:06:40
【问题描述】:

我有问题。在解析页面时,会出现一个弹出窗口并阻止对 html 的访问。我试图单击弹出窗口,但它会将我重定向到一个新页面,我不知道如何到达弹出窗口的右上角以将其关闭。我的问题是如何确定该元素的坐标? Stackoverflow 上提出的相关问题都没有帮助我找到解决方案,因此非常感谢您的帮助。

【问题讨论】:

  • 我无法访问 html,我只有一个屏幕!这里有分享屏幕的机会吗?我是 Stackoverflow 的新手!
  • 浏览器中的开发者工具应该可以让您看到 HTML,而检查工具可以让您看到正在发生的事情。奇怪的是这不是一个真正的窗口,只是一个 Div 或其他一些覆盖其他东西的元素。如果您尝试创建自动化,您真的需要访问 HTML,屏幕截图将缺少您需要知道的关键信息。

标签: ruby watir-webdriver


【解决方案1】:

为什么需要实际坐标?这似乎是一个坏主意,因为它可能会在不同的屏幕尺寸(响应式设计)上移动或产生不同的结果。你最好找到关闭按钮的类/ID并调用browser.button(class: 'close').clickbrowser.link(class: 'close').click

如果您需要帮助确定关闭按钮的类别,请打开您的浏览器并启用开发人员工具/控制台。他们现在都有一个检查器工具来选择元素并查找所有类和 ID。

万一没有类或 id,它可能有一个 data 属性,您可以使用它。

【讨论】:

  • 我无法访问该元素,这就是问题所在 - 我找不到右上十字来关闭它。我可以单击元素本身,但它会将我重定向到新页面。
  • 由于这个弹出窗口,页面上的大部分元素都被隐藏了
  • define '无权访问',等等,您是在谈论像 getbootstrap.com/javascript/#static-example 这样的模式弹出窗口吗?或者您实际上是在谈论警报/确认对话框w3schools.com/jsref/tryit.asp?filename=tryjsref_alert
  • 如果它是一个警报,请使用:rubydoc.info/gems/watir/Watir/Alert 一次只能在一个页面上激活一个警报,并且有一个 exists? 方法可以检查您是否没有尝试关闭没有的东西'还不存在。
  • 我正在为银行页面编写解析器。我没有页面的凭据,并使用我拥有的屏幕截图编写解析器。在其中一个页面上,我有一个正常页面,而在下一个页面上 - 一条我无法解决的消息。 browser.alert.exists?显示错误
【解决方案2】:

如果弹出窗口是常规浏览器窗口,您可以按索引将其关闭。您的主窗口的索引为 0。所以弹出窗口的索引为 1。

if browser.window(:index => 1).exists?
     browser.window(:index => 1).close
end

【讨论】:

  • 这个不太好用,因为隐藏了一个溢出,我通过运行 JS 插件设法摆脱了它。之后一个简单的“browser.alert.ok”工作得很好。不过,谢谢你的回答!
猜你喜欢
  • 2011-08-22
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-07
相关资源
最近更新 更多