Selenium单击坐标,而不是单击预期的位置
本文关键字:单击 位置 坐标 Selenium | 更新日期: 2023-09-27 18:18:29
我需要屏幕抓取一个使用ActiveX控件进行导航的网页。这不是用于ui测试的目的,而是用于从遗留应用程序下载数据。
我的问题是顶部导航是完整的ActiveX与javascript,是不可能得到任何元素。所以我尝试在坐标处进行鼠标点击。
我正在使用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 code Unit Test成功地做到这一点,因为它实际上移动了光标,但我不认为许可将允许我使用该选项以及让它在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();
不是通过偏移量来获取元素。确保你知道你的优先重点是什么……如果没有,那么它应该在页面的左上角。然后把你的睡眠放在中间,你应该可以看到鼠标移动,等待,然后点击。
Actions action = new Actions(driver);
action.MoveByOffset(200,100).Perform();
Thread.Sleep(10000);
action.Click();