![](/img/trans.png)
[英]How to extract the display attribute of an element using Selenium Webdriver and Java
[英]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.