【发布时间】:2014-10-11 23:57:54
【问题描述】:
我需要对使用 ActiveX 控件进行导航的网页进行屏幕抓取。这不是用于 ui 测试目的,而是用于从旧版应用程序下载数据。
我遇到的问题是顶部导航是完整的带有 javascript 的 ActiveX,并且不可能通过任何方式获取元素。所以我想在坐标上点击鼠标。
我正在使用以下方法answer by Bergstrom
基本上我在做
var action = new Actions(ieDriver).MoveToElement(ieDriver.FindElement(By.Tag("HTML"))).MoveByOffset(200,100).Click().Perform();
我在调试时确认 ieDriver.FindElement 返回 -1,-1 表示 HTML 标记的位置,因此偏移坐标应该是正确的。
我使用 IE 工具栏测量了坐标。当我运行代码时没有任何反应,所以我假设它在空白处单击。
有没有办法 ping 浏览器,以便我知道坐标在哪里,或者有更好的方法来实现这一点?
我能够使用 VS 编码单元测试成功地做到这一点,因为它实际上会移动光标,但我认为许可不允许我使用该选项以及让它在视觉之外运行的烦恼工作室。
【问题讨论】:
-
使用
.perform()将您的操作分开,并在它们之间等待。然后你可以看到它实际上将鼠标移动到哪里,而不是一次完成所有操作。 -
在另一个注意事项中,你为什么要点击一个点?如果您的浏览器上的分辨率发生变化,此步骤将不起作用,因为单击的点将是错误的。不太适合根据用户监视器更改的 Web 应用程序...
标签: c# selenium screen-scraping