簡體   English   中英

如何使用javascript使用java使用selenium Webdriver設置所選Web元素的屬性?

[英]How to use javascript to set attribute of selected web element using selenium Webdriver using 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 應用到我使用 selenium webdriver 發現的特定 webelement

例如,我選擇了一個使用 selenium webdriver 的鏈接

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

現在我想使用 javascript 設置這個 webelement 的屬性

但我不知道如何結合兩者

請幫我找到解決方案

沿着以下路線:

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

我也遇到過類似的問題,我使用了 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"));

        }

根據您的代碼試驗:

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

innerHTML似乎被設置為Click ME

因此,要設置一個新值,例如10作為innerHTML您可以使用JavascriptExecutor接口的executeScript()方法,您可以使用以下解決方案:

  • 使用innerHTML

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

理想情況下,您需要為elementToBeClickable()引入WebDriverWait ,並且您可以使用以下解決方案:

  • 使用textContent

     WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.linkText("Click ME"))) ((JavascriptExecutor) driver).executeScript("arguments[0].setAttribute('textContent','10')", element);

參考

您可以在以下位置找到相關的詳細討論:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM