Java 如何找到;光标“;使用Selenium Webdriver在网页中的位置?

Java 如何找到;光标“;使用Selenium Webdriver在网页中的位置?,java,selenium,Java,Selenium,我刚开始使用java脚本学习SeleniumWebDriver,我问的问题可能很愚蠢。但仍然想知道这是否可能 根据我的问题,请看下面的例子 在任何登录页面中,输入有效的“用户名”并单击“登录”按钮,它会抛出一条错误消息“请输入密码”,“光标”将位于“密码”字段中 因此,我们可以通过代码获取错误消息。现在,我们如何通过代码定位或识别网页中的“光标”位置?根据定义,任何具有焦点的小部件也具有光标。因此driver.switchTo().activeElement()将返回当前关注的WebElemen

我刚开始使用java脚本学习SeleniumWebDriver,我问的问题可能很愚蠢。但仍然想知道这是否可能

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

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


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

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

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

要验证expectedElement是否具有焦点。

Hey user3313128使用Selenium Web驱动程序库,只有知道上次将其移动到的位置,才能确定当前位置

遗憾的是,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}) 

尽管聪明的做法是在每次鼠标移动并单击()时在服务器端的JS中跟踪所有这些内容。

为了澄清,您是在询问1)页面上哪个元素具有焦点,还是在文本框中光标所在的位置(即,在现有文本的开头还是结尾)我知道这个问题是一年多前提出的。我只是觉得应该有答案。:-)