Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SeleniumWebDriver中使用JavascriptExecuter设置属性值_Javascript_Java_Selenium_Selenium Webdriver - Fatal编程技术网

如何在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是的,如果该属性已经在运行时存在,您可以使用此更新属性值。谢谢。它可以正常工作。现在加载图像有时间问题。很好