【问题标题】:How to find "Cursor" position in webpage with Selenium Webdriver?如何使用 Selenium Webdriver 在网页中找到“光标”位置?
【发布时间】:2014-02-15 11:00:18
【问题描述】:

我刚开始使用 java Script 学习 Selenium Webdriver,我问的问题可能我很傻。但还是想知道有没有可能。

根据我的问题,请看下面的例子

在任何登录页面,输入有效的“用户名”并点击“登录”按钮,它会抛出错误消息“请输入密码”,并且“光标”将位于“密码”字段中

因此,我们可以通过代码获取错误消息。那么,如何通过代码定位或识别网页中的“光标”位置呢?

【问题讨论】:

  • 澄清一下,您是在问 1) 页面上的哪个元素具有焦点,还是 2) 在文本框中,光标所在的位置(即,在现有的开头与结尾文本)?

标签: java selenium


【解决方案1】:

根据定义,任何具有焦点的小部件也具有光标。所以 driver.switchTo().activeElement() 将返回当前聚焦的 WebElement。它实际上并没有改变任何东西,只是返回活动元素。你可以打电话

expectedElement.equals(driver.switchTo().activeElement());

验证 expectedElement 是否具有焦点。

【讨论】:

  • 我知道这个问题是一年多以前提出的。我只是认为它应该有一个答案。 :-)
【解决方案2】:

嘿,使用 Selenium Web 驱动程序库的 user3313128,只有知道您最后移动到的位置才能确定当前位置。

遗憾的是,Javascript 无法让您快速获取 X 和 Y。

解决这个问题的一个简单方法是在浏览器中简单地运行一个简单的函数

async function (){
    await this.driver.executeScript(function(  ) { 
        let mouse = { x:0, y:0 }
        onmousemove = function(e){ mouse.x = e.clientX, mouse.y = e.clientY }
    })
}

此功能将全程跟踪您在浏览器中的鼠标 X 和 Y

然后当你需要知道鼠标的位置时,只需调用这个脚本

mouse = driver.executeScript( function (){return mouse}) 

虽然明智的做法是在每次鼠标移动和 click() 时在服务器端的 JS 中跟踪所有这些。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    相关资源
    最近更新 更多