2016-08-17 27 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

相關問題