我正在尝试为我的网站中所有相同类型的attribute
标记设置<img>
值,例如
<img src="images/temp/advertisement.png">
我想设置style="display:none"
,这样我就可以隐藏它们了。
我尝试了以下方法 -
List<WebElement> element = driver.findElements(By.tagName("img"));
for(WebElement e:element)
{
if(e.getAttribute(src).contains("images/temp/advertisement.png"))
{
jse.executeScript("document."+e+".setAttribute('style', 'display: none;')");
}
}
但收到错误
线程“main”中的异常org.openqa.selenium.WebDriverException: 未知错误:Runtime.evaluate抛出异常:SyntaxError: 意外的令牌[
是否有人帮助我在这里做错了什么或者我能做些什么?
答案 0 :(得分:1)
有一个问题就是你像对象一样传递e
并且调用了toString(),所以最后的结果是[]等...另一种方式可能是这样的:
jse.executeScript(
"var imgs = document.getElementsByTagName('img');" +
"for(var i = 0; i < imgs.length; i++) { " +
" if (imgs[i].getAttribute('src').indexOf('images/temp/advertisement.png') != -1) { " +
" imgs[i].setAttribute('style', 'display: none;');" +
" }" +
"}" );
我是在没有测试的情况下写的,所以也许你应该编辑它;)
答案 1 :(得分:1)
线程“main”中的异常org.openqa.selenium.WebDriverException:未知错误:Runtime.evaluate引发异常:SyntaxError:意外的令牌[
您正在使用JavascriptExecutor
在javascript
上执行element
,但语法不正确,executeScript
arguments
将通过{{{}}提供给{ {1}}魔术变量,好像该函数是通过arguments
调用的,其中Function.apply
必须是数字,arguments
,boolean
,String
等
您可以尝试以下方法: -
WebElement
答案 2 :(得分:0)
您使用document
找到WebElement
。在你的情况下,你已经找到了它。尝试
jse.executeScript("arguments[0].setAttribute('style', 'display: none;')", e);