我想验证我的所需文字是否出现在页面上。我不能使用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未定义
答案 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选择器完成!