Java Selenium Webdriver-验证文本框是否受写保护?
如何使用Java代码验证Selenium中的字段是否受写保护(即只读)Java Selenium Webdriver-验证文本框是否受写保护?,java,selenium-webdriver,webdriver,Java,Selenium Webdriver,Webdriver,如何使用Java代码验证Selenium中的字段是否受写保护(即只读) 致以最诚挚的问候您可以尝试通过sendkeys()编写一些内容,并检查textbox的value属性是否未更改 WebElement界面有一个名为的函数。因为我不知道您需要什么检查,所以我将发布一些可能有用的示例 driver.findElements(By.cssSelector("input:not([readonly='readonly'])[type='text']")); =>返回所有可编辑的文本输入字段 Web
致以最诚挚的问候您可以尝试通过sendkeys()编写一些内容,并检查textbox的value属性是否未更改 WebElement界面有一个名为的函数。因为我不知道您需要什么检查,所以我将发布一些可能有用的示例
driver.findElements(By.cssSelector("input:not([readonly='readonly'])[type='text']"));
=>返回所有可编辑的文本输入字段
WebElement element = driver.findElement(By.id("username");
//can fail if the attribute is not there
String attribute = element.getAttribute("readonly");
=>使用selenium java 2.21.0可能需要一个try-catch块,您可以检查它是否已启用
driver.findElement(By.id("...")).isEnabled()
WebElement some_element = driver.findElement(By.id("some_id"));
String readonly = some_element.getAttribute("readonly");
Assert.assertNotNull(readonly);
function isEditable(element){
if(element.nodeName==="INPUT" || element.nodeName==="TEXTAREA"){
return !element.disabled && !element.readOnly;
}else{
return element.isContentEditable;
}
}
不要验证getAttribute(“readonly”).equals(“true”)或类似内容,在不同的浏览器中也可能不同。(IE中的readonly=“readonly”,FF中的readonly=“”,等等)下面的代码最适合我。希望这会有用
WebElement fieldName = driver.findElement(By.id("enter_id"));
fieldName.sendKeys("abc");
String fieldNameVal = fieldName.getAttribute("value");
if(fieldNameVal.contentEquals("abc")){
System.out.println("Field is editable");
}
else{
System.out.println("Field is non editable" + fieldNameVal);
}
这是一个迟来的答案,但因为我最近正在研究这个问题,我想与大家分享我的解决方案 我实现了一个测试文本框是否为只读的方法。我正在处理一个Django项目,因此代码是用Python编写的,但我相信将其移植到Java很容易:
from django.contrib.staticfiles.testing import StaticLiveServerTestCase
class MyTest(StaticLiveServerTestCase):
def setUp(self):
self.browser = webdriver.Firefox()
def _is_text_box_read_only(self, web_element):
old_text = web_element.get_attribute("value")
web_element.send_keys("test")
new_text = web_element.get_attribute("value")
web_element.clear()
web_element.send_keys(old_text) # Resume to the previous text
return old_text == new_text
请注意:
值
来获取输入的文本我知道已经有人回答了。但不幸的是,当我面临类似问题时,我不得不花一些时间找到正确的解决方案。
我同意.getAttribute(“readonly”)返回null,但要处理它> 我写了类似的东西:
public boolean isreadOnly(element) {
Boolean readOnly = false;
readOnly = ((element.getAttribute("disabled") != null) || (element.getAttribute("readonly") != null));
return readOnly;
}
并致电:
WebElement text = driver.findElement("locator"));
return isReadOnly(text);
下面是另一个答案,使用javascript
Boolean isEditable = js.executeScript("if(arguments[0].nodeName==='INPUT' || arguments[0].nodeName==='TEXTAREA'){ return !arguments[0].disabled && !arguments[0].readOnly; }else{ return arguments[0].isContentEditable};", webelement);
这个答案是基于和简化了一点。
在常规Javascript中,它将如下所示:
WebElement some_element = driver.findElement(By.id("some_id"));
String readonly = some_element.getAttribute("readonly");
Assert.assertNotNull(readonly);
function isEditable(element){
if(element.nodeName==="INPUT" || element.nodeName==="TEXTAREA"){
return !element.disabled && !element.readOnly;
}else{
return element.isContentEditable;
}
}
这解决了“readOnly”和“disabled”属性,并且可以用于任何类型的元素。html中是否有一个属性显示框受到保护?是的-有一个名为“readOnly”的字段。以下详细信息针对该领域——感谢所有回复。不知何故,我尝试了所有这些想法,并实现了我选择的一个。WebElement usernamelement=driver.findElement(By.id(“用户名”);sendKeys(“SampleText”);如何为selenium RC编写?我只使用webdriver和grid2It's Ok:-)无法帮助您。谢谢:-)。我拿到了solution@Tarken:获取元素属性后,需要验证。怎么做?您好,您还需要一个答案吗?您可能希望将旧文本设置回,以防字段可编辑。