在selenium javascript执行器中使用javascript

时间:2014-06-27 12:17:58

标签: javascript selenium selenium-webdriver

我想验证我的所需文字是否出现在页面上。我不能使用selenium webdriver的gettext()方法作为其抛出权限异常。所以我使用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未定义

1 个答案:

答案 0 :(得分:1)

这里有许多JavaScript问题以及对选择器的严重缺乏了解。 contains不是标准的一部分,不适用于旧浏览器:

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

如果因任何原因未定义element.text,您需要应对:

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

(意思是,如果“element”是某事而element.text是某事并且如果element.text包含'mytext')

另外,我可以看到你基本上试图对某些文本进行包含搜索 - 你绝对不需要JavaScript 。它可以使用XPath选择器完成!