如何在SeleniumWebDriver中使用JavascriptExecuter设置属性值
我正在尝试为我的网站中所有相同类型的如何在SeleniumWebDriver中使用JavascriptExecuter设置属性值,javascript,java,selenium,selenium-webdriver,Javascript,Java,Selenium,Selenium Webdriver,我正在尝试为我的网站中所有相同类型的标签设置属性值,例如 但是有一个错误 线程“main”org.openqa.selenium.WebDriverException中的异常: 未知错误:Runtime.evaluate引发异常:SyntaxError: 意外标记[ 这里有没有人帮了忙,或者我能做些什么?有一个问题,你像传递对象一样传递e,它被称为toString(),所以最终的结果是[]等等……另一种方法可能是这样的: List<WebElement> element = driv
标签设置属性值,例如
但是有一个错误
线程“main”org.openqa.selenium.WebDriverException中的异常:
未知错误:Runtime.evaluate引发异常:SyntaxError:
意外标记[
这里有没有人帮了忙,或者我能做些什么?有一个问题,你像传递对象一样传递e
,它被称为toString(),所以最终的结果是[]等等……另一种方法可能是这样的:
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;')");
}
}
jse.executeScript(
“var imgs=document.getElementsByTagName('img')+
“对于(var i=0;i
我没有测试就写了它,所以也许你应该编辑它;)有一个问题,你像一个对象一样传递e
,它被称为toString(),所以最终的结果是[]等等……另一种方法可能是这样的:
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;')");
}
}
jse.executeScript(
“var imgs=document.getElementsByTagName('img')+
“对于(var i=0;i
我没有经过测试就写了它,所以也许你应该编辑它;)
线程“main”org.openqa.selenium.WebDriverException中出现异常:未知错误:Runtime.evaluate引发异常:SyntaxError:意外标记[
您正在使用对元素执行javascript
,但语法不正确,参数中的将通过参数
魔术变量提供给javascript,就好像函数是通过函数调用的一样。apply
其中参数
必须是一个数字,一个布尔值
,一个字符串
,网页元素
等
您可以尝试以下操作:-
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;');" +
" }" +
"}" );
List元素=driver.findElements(按.tagName(“img”);
对于(WebElement e:element){
如果(e.getAttribute(“src”)包含(“images/temp/advision.png”)){
jse.executeScript(“参数[0].style.display='none',e);
}
}
线程“main”org.openqa.selenium.WebDriverException中出现异常:未知错误:Runtime.evaluate引发异常:SyntaxError:意外标记[
您正在使用对元素执行javascript
,但语法不正确,参数中的将通过参数
魔术变量提供给javascript,就好像函数是通过函数调用的一样。apply
其中参数
必须是一个数字,一个布尔值
,一个字符串
,网页元素
等
您可以尝试以下操作:-
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;');" +
" }" +
"}" );
List元素=driver.findElements(按.tagName(“img”);
对于(WebElement e:element){
如果(e.getAttribute(“src”)包含(“images/temp/advision.png”)){
jse.executeScript(“参数[0].style.display='none',e);
}
}
您可以使用文档
定位Web元素
。在您的情况下,您已经找到了它。请尝试
List<WebElement> element = driver.findElements(By.tagName("img"));
for(WebElement e:element) {
if(e.getAttribute("src").contains("images/temp/advertisement.png")){
jse.executeScript("arguments[0].style.display = 'none'", e);
}
}
您可以使用document
来定位WebElement
。在您的情况下,您已经找到了它。请重试
List<WebElement> element = driver.findElements(By.tagName("img"));
for(WebElement e:element) {
if(e.getAttribute("src").contains("images/temp/advertisement.png")){
jse.executeScript("arguments[0].style.display = 'none'", e);
}
}
它现在不显示错误,但无法设置style=“display:none”
attribute。如果该标记本身的属性以html形式存在,那么您是否可以更改该属性值?@narendrajput是的,如果该属性在运行时已经存在,您可以使用该属性更新属性值。。谢谢。它正在工作。现在加载图像有时间问题。它的精细度现在没有显示错误,但无法显示设置style=“display:none”
attribute。这样,如果该标记的属性本身在html中存在,您就可以更改属性值吗?@narendrajput是的,如果该属性已经在运行时存在,您可以使用此更新属性值。谢谢。它可以正常工作。现在加载图像有时间问题。很好