如何使用javascript使用java来设置所选Web元素的属性,使用selenium Webdriver使用java?

我想使用javascript为网页上的选定元素设置属性。

我已经找到了2种使用javascript设置属性的方法

1

   WebDriver driver; // Assigned elsewhere
    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("document.getElementByID('//id of element').setAttribute('attr', '10')");

2

WebElement element = driver.findElement(By.id("foo"));
    String contents = (String)((JavascriptExecutor)driver).executeScript("return arguments[0].innerHTML;", element);

但是我想将javascript应用于特定的webelement,我发现使用硒webdriver

作为一个例子,我有选择一个链接使用硒网络驱动程序

driver.findElement(By.linkText("Click ME"))

现在我想使用javascript设置这个webelement的属性

但我不知道如何将两者结合起来

请帮我找到解决方案


答案 1

大致如下:

JavascriptExecutor js = (JavascriptExecutor) driver;
WebElement element = driver.findElement(By.linkText("Click ME"));
js.executeScript("arguments[0].setAttribute('attr', '10')",element);

答案 2

我也遇到了类似的问题,我使用了javascript Executor。

因此,在我的情况下,我有一个元素列表,我必须更改一个属性

在这里,首先我找到元素,然后遍历列表,创建一个javascriptExecutor对象,然后在该特定元素上执行脚本

//arguments[0] means the element
//arguments[1] means the property
//arguments[2] means the new value of the propert


List<WebElement> unselectableDiv = driver
                .findElements(By.xpath("//div[@class='x-grid3-cell-inner x-grid3-col-6']"));

        for (WebElement element : unselectableDiv) {

            // System.out.println( "**** Checking the size of div "+unselectableDiv.size());

            JavascriptExecutor js = (JavascriptExecutor) driver;

            String scriptSetAttr = "arguments[0].setAttribute(arguments[1],arguments[2])";

            js.executeScript(scriptSetAttr, element, "unselectable", "off");

            System.out.println(" *****   check value of Div property " + element.getAttribute("unselectable"));

        }