2016-08-17 69 views
5

我在创建有效函数时会遇到问题,该函数将突出显示网页上某些定义的元素。请注意,我是编码初学者,问题可能是简单的环境设置问题,或者缺乏javascript/selenium功能的主要知识。Selenium-WebDriver如何使用JavaScript和Firefox浏览器突出显示元素

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

var webdriver = require('selenium-webdriver'), 
    By = webdriver.By 

var driver = new webdriver.Builder().forBrowser('firefox').build(); 

我用driver.get();打开网页,然后我只需使用XPath例:

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

定义元素的位置,现在的问题开始,又该我确实让WebDriver用ex来突出显示这个指定的元素。红色边框?在浏览堆栈和其他类似的网页,我发现的唯一答案就是使用

element.style.backgroundColor = 'red' 

,但我得到的控制台错误一些有关Java的语法使用JavaScript执行人,或一些webdriver的功能,即style或的其他部分语法不是一个函数。在这一点上,我没有解决如何做到这一点,我慢慢怀疑,我将能够完成这项任务,而不需要关于html5/java的知识。也许任何人遇到过这样的困难,并会分享线索?

https://jsfiddle.net/osav574j/ < - 我准备了我的脚本的简单版本,它可能会给我一个关于我的完整代码的样子的线索。亮点部分可能是错误的,只是为了向你展示,我是如何看待它的,但这是纯粹的假设。

干杯! Perkele

回答

2

你应该尝试如下使用executeScript(): -

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

完美的作品! driver.executeScript();是我一直在寻找的东西。谢谢你Saurabh! – Perkele

0

这是突出显示元素的Javascript代码。硒不必因此凸显的唯一出路任何原生的方法是使用类似下面的代码:

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

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

+0

当我尝试实施这样的解决方案(或任何类似),我得到的错误“语法错误:意外的标识”,这涉及到“JS”。也许我缺少一些库,或者在使用JavascriptExecutor之前错过了在脚本中调用一些重要的东西? – Perkele

+1

JavascriptExecutor属于这个包 - org.openqa.selenium 你使用哪种语言的硒? –

+0

我使用JavaScript编写,并使用Eclipse Neon(为JavaScript构建)。我发现,调用org.openqa.selenium是Java所必需的,但在JavaScript中,我所要做的就是用'var webdriver = require('selenium-webdriver')'打开我的应用代码,然后直接调用JavaScriptExecutor与'driver.executeScript();'作为Sauarbh Gaur建议。 – Perkele

相关问题