当前位置: 首页 > 知识库问答 >
问题:

如何使用WebDriver移动光标位置

殷宇
2023-03-14

我正在做Liferay 6.2项目。在Liferay中,他们使用了Vaadin。当我点击一个按钮时,它会打开一个不同的iframe。我可以为所有功能编写代码。现在我想使用WebDriver将光标移动到iframe元素。因为当我将鼠标移动到iframe复选框之后,我的自动脚本就可以运行了。我想自动化一个脚本,将鼠标指针移动到元素。

我已经尝试了下面的代码,但它不起作用。

1) 使用动作移动元素:

driver.findElement(By.xpath("element1")).click();
new Actions(driver).moveToElement(driver.findElement(By.xpath("element2"))).click().perform();

2)使用鼠标移动

WebElement element = driver.findElement(By.xpath("element xpath"));
Locatable hoverItem = (Locatable) element;
Mouse mouse = ((HasInputDevice) driver).getMouse();
mouse.mouseMove(hoverItem.getCoordinates());

错误:在((HasInputDevice)驱动程序中获取错误。HasInputDevice无法解析为类型

3)

Locatable hoverItem = (Locatable) driver.findElement(By.xpath("element xpath"));
int y = hoverItem.getCoordinates().getLocationOnScreen().getY();
((JavascriptExecutor)driver).executeScript("window.scrollBy(0,"+y+");");

错误:getLocationOnScreen()中出现错误类型坐标的getLocationOnScreen()方法未定义

4)

Point coordinates = driver.findElement(By.xpath("element xpath")).getLocation();
Robot robot = new Robot();
WebElement markNews = driver.findElement(By.xpath("element xpath"));
markNews.click();
robot.mouseMove(coordinates.x,coordinates.y+80);

这行不通。

我只想将光标点移动到iframe定位器。

共有3个答案

蒋阳华
2023-03-14

我认为你的第一个例子:

new Actions(driver).moveToElement(driver.findElement(By.xpath("element2"))).click().perform();

应改为:

new Actions(driver).moveToElement(driver.findElement(By.xpath("element2"))).build().perform().click();

也就是说,首先找到元素,然后构建一系列要在其上执行的操作(在本例中只有一个),然后执行这些操作(现在鼠标应该在元素上),然后单击

景明诚
2023-03-14

它是:

HasInputDevices

(设备是复数)

闾丘永春
2023-03-14

您可以使用以下命令直接选择iframe:

driver.switchTo().frame(driver.findElement(By.id("frameId")));

现在,通过使用selenium web驱动程序,您可以在此iframe中执行任何操作。

要返回主窗口,您只需:

driver.switchTo().defaultContent();
 类似资料:
  • 欢迎进入第一章,这一章将学习简单的光标移动操作。 如果你已经有了一定基础,这部分可以略过,直接 G 到文档尾部按照操作进入下一章。 移动光标 单位级 h 向左一字符 j 下一行 k 上一行 l 向右一字符 单词级 w or W 向右移动到下一单词开头 e or E 向右移动到单词结尾 b or B 向左移动到单词开头 注意:所有小写单词都是以分词符作为单词界限,大写字母以空格作为界限 在下面字符块

  • 问题内容: 我想制作一个可以测量光标到组件中心的距离,然后将光标移回中心的应用程序(就像大多数PC视频游戏一样)。有没有人有什么建议? 问题答案: 机器人课可以帮您解决问题。以下是用于移动鼠标光标的示例代码:

  • 问题内容: 下面的代码片段实现了我想要的功能,即,它删除了所有非字母数字字符,转换为大写字母,并保留了光标位置。 我将此代码段放置在指令的中,并且可以正常工作。 问题在于,在应用更改 之前 ,模型会看到该值。我尝试向Google查询如何使用或此处的任何内容,但没有任何效果。 __ (实际上,我以某种方式进行了管理,但是内容重新呈现后我失去了位置。我无法复制它,但是无论如何它还不够好。) 问题答案:

  • 我使用Selenium和C#执行单击操作。 我可以执行点击操作,但我不能将鼠标指针(光标)移动到特定坐标或特定元素上。 这是我正在使用的代码。上下文单击正在工作,但光标未移动。 帮帮我。

  • 主要内容:Vim快捷方向键,Vim光标以单词为单位移动,Vim光标移动至行首或行尾,Vim光标移动至指定字符,Vim光标移动到指定行,Vim光标移动到匹配的括号处Vim 文本编辑器中,最简单的移动光标的方式是使用方向键,但这种方式的效率太低,更高效的方式使用快捷键。 Vim 移动光标常用的快捷键及其功能如下面各表所示,需要注意的是,表中所有的快捷键都在命令模式(默认状态)下直接使用。 Vim快捷方向键 表 1 Vim光标上、下、左、右移动快捷键 快捷键 功能描述 h 光标向左移动一位 j 光标向

  • 问题内容: 我想在C程序中前后移动光标。我正在读取一个循环中的整行,但是我希望如果按下光标键,屏幕上的光标会改变位置,而不会阻塞循环。我试过了,但它阻止了呼叫者,直到按下它为止。我正在寻找的是一种类似于bash提示的行为。我正在阅读与此类似的代码: 我正在尝试上面的功能像在库上一样 问题答案: 使用和控制台代码(兼容VT100-非便携式):