2014-06-27 84 views
0

我想驗證我的所需文本是否出現在頁面上。我不能使用硒webdriver的gettext()方法作爲其拋出許可異常。所以我使用JavaScript來比較文本。在selenium中使用javascript javascript執行者

String scriptToExec = "var result = document.getElementsByClassName('Sender'); 
    for(var element in result){ 
    if (element.text.contains('mytext')) 
    {return true;} 
    else 
    {return false;}}";   

    JavascriptExecutor js = (JavascriptExecutor) driver; 
    Boolean result = (Boolean) (js.executeScript(scriptToExec)); 

我得到這個異常:org.openqa.selenium.remote。

ErrorHandler $ UnknownServerException:element.text未定義這裏

+0

當你嘗試了gettext()方法,請給出代碼和相關的堆棧跟蹤。它應該工作。 – Algiz

+0

廣東話粘貼整個堆棧跟蹤:驅動程序信息:org.openqa.selenium.remote.RemoteWebDriver 能力[{平臺= XP,javascriptEnabled = TRUE,acceptSslCerts = TRUE,browserName =火狐,旋轉=假,locationContextEnabled = TRUE,webdriver的。 remote.sessionid = 83461874-001e-486f-88a3-5fd82fe125ad,version = 26.0,databaseEnabled = true,cssSelectorsEnabled = true,handlesAlerts = true,browserConnectionEnabled = true,webStorageEnabled = true,nativeEvents = false,applicationCacheEnabled = true,takesScreenshot = true} ] – webtester

回答

1

很多JavaScript的問題以及嚴重缺乏對選擇的理解。 contains不是標準的一部分,不會與舊版本瀏覽器的工作:如果有element.text未定義無論出於何種原因

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/contains

,你需要應付的是:

if (element && element.text && element.text.contains('mytext')) 

(意思是,如果 「元件」 是東西和element.text是東西並且如果element.text包含 'mytext的')

此外,我可以看到你基本上試圖做一個包含搜索一些文本 - 你絕對不需要JavaScript爲此。它可以使用XPath選擇器完成!

+0

包含方法在使用相同瀏覽器的螢火蟲控制檯上執行時,會給我正確的結果。關於xpath選擇器,我提到我得到一個權限相關的錯誤,這就是使用javascript的原因。在我看來,這是一個與語法相關的問題。仍在試圖弄清楚。 – webtester

+1

當然Firebug將允許你這樣做,它是一個插件。你應該努力解決權限錯誤,而不是解決它。當你通過這些自動化測試進行測試時,它很可能會一直出現,所以你只需要對* API進行工作,並且基本上只是始終使用本地JS。解決問題! – Arran

相關問題