Selenium单击坐标而不是单击预期的位置

gre*_*boy 6 c# selenium screen-scraping

我需要屏幕抓取一个使用ActiveX控件进行导航的网页.这不是用于ui测试目的,而是用于从遗留应用程序下载数据.

我的问题是顶部导航是完整的ActiveX与JavaScript,是不可能得到任何东西的元素.所以我试图在坐标处点击鼠标.

我使用Bergstrom的以下方法回答

基本上我在做

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之外运行的烦恼.

Ert*_*maa 6

我花了大约 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)


mut*_*utt 5

与其尝试获取一个元素,不如偏移它。确保您知道之前的重点是什么...如果没有重点,那么它应该在页面的左上角。然后,将您的睡眠置于中间,您应该能够看到鼠标移动,等待,然后单击。

Actions action = new Actions(driver);
action.MoveByOffset(200,100).Perform();
Thread.Sleep(10000);
action.Click();
Run Code Online (Sandbox Code Playgroud)