Selenium-WebDriver如何使用JavaScript和Firefox浏览器突出显示元素

我在创build有效的函数时会遇到问题,它会突出显示网页上某些已定义的元素。 请注意,我是编码初学者,问题可能是简单的环境设置问题,或者缺乏对javascript / seleniumfunction的主要知识。

我在Eclipse Neon中创build了我的脚本。 为了build立一个环境,我安装了node.js和geckodriver,以便能够在Firefox浏览器上运行。 我的脚本的开始是:

var webdriver = require('selenium-webdriver'), By = webdriver.By var driver = new webdriver.Builder().forBrowser('firefox').build(); 

我使用driver.get();打开网页driver.get(); 然后我简单地通过使用xPath来定义元素位置:

 var element = driver.findElement(By.xpath("xPath goes here")); 

现在问题开始了,我应该怎么做才能让WebDriver突出显示这个指定的元素。 红色边框? 当浏览堆栈和其他类似的页面时,我发现的唯一答案是关于在Java语法中使用JavaScript Executor或使用一些webdriver函数

 element.style.backgroundColor = 'red' 

但我得到控制台错误,该style或其他语法的一部分是不是一个函数。 在这一点上,我解决了如何做到这一点,我慢慢怀疑,我将能够在没有关于html5 / java的知识的情况下完成这个任务。 也许任何人遇到过这样的困难,都会分享一些线索?

https://jsfiddle.net/osav574j/ < – 我准备了我的脚本的简单版本,可能会给你一个线索,如何我的完整的代码看起来像。 突出部分可能是错误的,只是为了向你展示,我是怎么想的,但这纯粹是假设。

干杯! Perkele

你应该尝试使用executeScript() ,如下所示:

 var element = driver.findElement(By.xpath("xPath goes here")); driver.executeScrip‌t("arguments[0].style.backgroundColor = 'red'", element); 

这是突出显示元素的Javascript代码。 Selenium没有任何本地方法突出显示,因此唯一的出路是使用类似于这样的代码:

 JavascriptExecutor js=(JavascriptExecutor)driver; js.executeScript("arguments[0].setAttribute('style,'border: solid 2px red'')", username); 

这里的用户名是webelement的名字。