Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何借助selenium中的鼠标事件从浏览器屏幕中选择文本?_Java_Selenium_Text_Mouseevent - Fatal编程技术网

Java 如何借助selenium中的鼠标事件从浏览器屏幕中选择文本?

Java 如何借助selenium中的鼠标事件从浏览器屏幕中选择文本?,java,selenium,text,mouseevent,Java,Selenium,Text,Mouseevent,我正在尝试选择浏览器上已存在的文本 我想选择该特定文本并对其执行右键单击操作。 但是,浏览器上的页面已禁用右键单击 在这种情况下,我如何选择文本?使用没有Selenium的普通web浏览器,我唯一能想到的解决方法是禁用javascript以停止阻止右键单击的脚本。因此,它还应该与SeleniumWebDriver控制的浏览器配合使用 我不知道这对你是否合适,因为你的网站可能依赖javascript来实现基本功能 但是,如果您的Selenium测试不需要Javascript,您可以在启动驱动程序时

我正在尝试选择浏览器上已存在的文本

我想选择该特定文本并对其执行右键单击操作。 但是,浏览器上的页面已禁用右键单击


在这种情况下,我如何选择文本?

使用没有Selenium的普通web浏览器,我唯一能想到的解决方法是禁用javascript以停止阻止右键单击的脚本。因此,它还应该与SeleniumWebDriver控制的浏览器配合使用

我不知道这对你是否合适,因为你的网站可能依赖javascript来实现基本功能

但是,如果您的Selenium测试不需要Javascript,您可以在启动驱动程序时尝试以下操作:

FirefoxProfile p = new FirefoxProfile();
p.setPreference("javascript.enabled", false);
driver = new FirefoxDriver(p);
我假设您已经知道如何执行右键单击,因为您的问题只是关于如何处理阻止您执行右键单击的问题。但如果不是,您也可以参考以下答案:

编辑:

很抱歉,我真的认为您可以使用Selenium操作来选择所需的文本,但在一些测试之后,我没有执行单击并拖动来选择文本。在Chrome或Firefox中唯一适合我的是以下内容。它查找包含一些文本的
,然后双击以选择一个单词

driver.get("http://en.wikipedia.org/wiki/Java_(programming_language)");
WebElement text = driver.findElement(By.xpath("//p[contains(text(),'Java is')]"));
Actions select = new Actions(driver);
select.doubleClick(text).build().perform();
然而,它在html元素中只突出了一个包含文本的单词,因此并不方便

我还尝试按Ctrl+F键并键入文本,以便web浏览器自动选择它,但执行时浏览器不执行任何操作:

Actions search = new Actions(driver);
search .sendKeys(Keys.chord(Keys.CONTROL,"+f")).sendKeys("Java is").build().perform();
似乎Selenium只能将keys事件发送到html元素,而不能发送到浏览器(在ctrl+F的情况下)


我现在还没有找到解决办法,让我们看看其他人是否能找到解决办法。这是一个有趣的问题,对于我来说,按照您所描述的方式选择一个文本也会很有用,使用普通的web浏览器而不使用Selenium。我能想到的唯一解决方法是禁用javascript来停止阻止您右键单击的脚本。因此,它还应该与SeleniumWebDriver控制的浏览器配合使用

我不知道这对你是否合适,因为你的网站可能依赖javascript来实现基本功能

但是,如果您的Selenium测试不需要Javascript,您可以在启动驱动程序时尝试以下操作:

FirefoxProfile p = new FirefoxProfile();
p.setPreference("javascript.enabled", false);
driver = new FirefoxDriver(p);
我假设您已经知道如何执行右键单击,因为您的问题只是关于如何处理阻止您执行右键单击的问题。但如果不是,您也可以参考以下答案:

编辑:

很抱歉,我真的认为您可以使用Selenium操作来选择所需的文本,但在一些测试之后,我没有执行单击并拖动来选择文本。在Chrome或Firefox中唯一适合我的是以下内容。它查找包含一些文本的
,然后双击以选择一个单词

driver.get("http://en.wikipedia.org/wiki/Java_(programming_language)");
WebElement text = driver.findElement(By.xpath("//p[contains(text(),'Java is')]"));
Actions select = new Actions(driver);
select.doubleClick(text).build().perform();
然而,它在html元素中只突出了一个包含文本的单词,因此并不方便

我还尝试按Ctrl+F键并键入文本,以便web浏览器自动选择它,但执行时浏览器不执行任何操作:

Actions search = new Actions(driver);
search .sendKeys(Keys.chord(Keys.CONTROL,"+f")).sendKeys("Java is").build().perform();
似乎Selenium只能将keys事件发送到html元素,而不能发送到浏览器(在ctrl+F的情况下)


我现在还没有找到解决办法,让我们看看其他人是否能找到解决办法。这是一个有趣的问题,按照您描述的方式选择文本也会很有用,移动到元素的中间

Actions builder = new Actions(webDriverObject);
builder.moveToElement(element).build().perform();
移动到图元的起点,单击并按住,移动到终点

Integer width = element.getSize().getWidth();
Actions newBuilder = new Actions(webDriverObject);
newBuilder.moveByOffset(width/2,0).clickAndHold.moveByOffset(width,0).release().build().perform();

移动到元素的中间

Actions builder = new Actions(webDriverObject);
builder.moveToElement(element).build().perform();
移动到图元的起点,单击并按住,移动到终点

Integer width = element.getSize().getWidth();
Actions newBuilder = new Actions(webDriverObject);
newBuilder.moveByOffset(width/2,0).clickAndHold.moveByOffset(width,0).release().build().perform();

在高亮显示文本中选择“作为”?在高亮显示文本中选择“作为”?有几种方法可以选择文本(双击、单击并按住然后拖动、CTRL+F并键入…)您要选择哪种文本?只有一个单词、几个单词、一整段文字?大多数情况下单击并按住然后拖动。你可以这样说我。我想全部试试。一些单词和段落都可以。非常感谢。但是,你能给出另一个基于其他类型搜索的示例吗?例如,使用拖放类型。我还想应用鼠标事件。我没有成功执行拖放来选择文本,使用Selenium可能不可能,让我们看看是否有其他人能够做到这一点。非常感谢。有几种方法可以选择文本(双击,单击并按住,然后拖动,CTRL+F并键入,…)你想选择什么类型的文本?只有一个单词,几个,一整段?大多数情况下点击并按住然后拖动。你可以用任何方式说我。我想全部尝试。一些单词和段落都可以。非常感谢。但是你能给出另一个基于其他类型搜索的示例吗?例如,使用拖放类型。我还想应用鼠标事件。我没有成功执行拖放以选择文本,Selenium可能无法执行此操作,让我们看看是否有其他人已成功完成此操作。非常感谢。