这篇文章将检查我们如何使用Java检查selenium webdriver中的字段是否可编辑。
我们如何知道我们是否可以编辑字段?“readonly”属性控制字段的可编辑性。如果元素上存在“readonly”属性,则无法编辑或操作该元素或字段。
因此,如果我们找到一种方法来知道元素是否存在“readonly”,那么我们也可以确定字段的可编辑性。
我们可以找到使用-
- getAttribute()方法
- 关于Javascript Executor
让我们一个接一个地看看这两种方式。
getAttribute()方法
WebElement接口的getAttribute()方法用于获取元素的属性值。
我们将使用getAttribute()方法获取“readOnly”属性的值。如果方法返回true,则意味着该字段不可编辑。否则,该字段是可编辑的。
我们将使用https://testkru.com/Elements/TextFields上的不可编辑元素。
突出显示的元素的ID为“不可编辑”。我们将使用这个id来查找元素,然后了解它的可编辑性特性。
public class CodekruTest {
@Test
public void test() {
// pass the path of the chromedriver location in the second argument
System.setProperty("webdriver.chrome.driver", "E:\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
// opening the url
driver.get("https://testkru.com/Elements/TextFields");
WebElement element = driver.findElement(By.id("uneditable"));
// this will tell whether the field is editable or not
System.out.println("Is text field non-editable: " + element.getAttribute("readonly"));
}
}
产出-
Is text field non-editable: true
由于readonly属性为我们的元素提供,我们在结果中得到了true。
使用Javascript Executor
javascriptExecutor用于执行selenium中的JavaScript代码。
我们也可以通过JavaScript代码获取readonly属性的值。下面的代码将根据字段是否具有readOnly属性给出true或false。
return arguments[0].readOnly
其中arguments[0]是我们要检查其可编辑性的元素。
public class CodekruTest {
@Test
public void test() {
// pass the path of the chromedriver location in the second argument
System.setProperty("webdriver.chrome.driver", "E:\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
// opening the url
driver.get("https://testkru.com/Elements/TextFields");
WebElement element = driver.findElement(By.id("uneditable"));
// this will tell whether the field is editable or not
JavascriptExecutor jse = (JavascriptExecutor) driver;
System.out.println("Is text field non-editable: " + jse.executeScript("return arguments[0].readOnly", element));
}
}
产出-
Is text field non-editable: true