gre*_*boy 6 c# selenium screen-scraping
我需要屏幕抓取一个使用ActiveX控件进行导航的网页.这不是用于ui测试目的,而是用于从遗留应用程序下载数据.
我的问题是顶部导航是完整的ActiveX与JavaScript,是不可能得到任何东西的元素.所以我试图在坐标处点击鼠标.
基本上我在做
var action = new Actions(ieDriver).MoveToElement(ieDriver.FindElement(By.Tag("HTML"))).MoveByOffset(200,100).Click().Perform();
Run Code Online (Sandbox Code Playgroud)
我在调试时确认ieDriver.FindElement为HTML标记的位置返回-1,-1,因此偏移坐标应该是正确的.
我使用IE工具栏测量坐标.当我运行代码时没有任何反应,所以我假设它在空白处单击.
有没有办法ping浏览器,所以我知道坐标在哪里或有更好的方法实现这一点?
我能够使用VS编码单元测试成功完成此操作,因为它实际上移动了光标,但我不认为许可将允许我使用该选项以及让它在visual studio之外运行的烦恼.
我花了大约 2 个小时试图让它工作,我在 iframe 中有一个元素,
请记住,互联网上有很多代码示例无法正常工作,我最终选择了这个实际上可以正常工作的代码示例:
_driver.SwitchTo().Frame(recaptchaChallengeFrame);
var body = _driver.FindElement(By.XPath(".//body"));
Actions builder = new Actions(_driver);
builder
.MoveToElement(body, absClickX, absClickY)
.Click()
.Build()
.Perform();
Run Code Online (Sandbox Code Playgroud)
与其尝试获取一个元素,不如偏移它。确保您知道之前的重点是什么...如果没有重点,那么它应该在页面的左上角。然后,将您的睡眠置于中间,您应该能够看到鼠标移动,等待,然后单击。
Actions action = new Actions(driver);
action.MoveByOffset(200,100).Perform();
Thread.Sleep(10000);
action.Click();
Run Code Online (Sandbox Code Playgroud)