如何使用Java代码验证Selenium中的字段是否写保护(即只读)?最好的问候
7xzttuei1#
1.* * isEnabled()没有任何通用的只读内容。1. * 字符串属性=元素. getAttribute("只读");即使没有"readonly",也不会使您的测试失败。在这种情况下,它返回null***,但我们需要例外。像这样使用:
WebElement some_element = driver.findElement(By.id("some_id")); String readonly = some_element.getAttribute("readonly"); Assert.assertNotNull(readonly);
不要验证**getAttribute("readonly"). equals("true")**或类似信息,在不同的浏览器中,它也可能不同。(在IE中readonly ="readonly",在FF中readonly =""等)
kuuvgm7e2#
您可以尝试通过sendkeys()编写一些内容,并检查textbox的value属性是否未更改。
o2g1uqev3#
WebElement接口有一个名为isEnabled的函数。
WebElement
lvmkulzt4#
因为我不知道你需要什么检查,我会张贴一些例子,可能是有用的。
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");
=〉可能需要try catch块
wyyhbhjk5#
使用selenium-java 2.21.0,您可以检查其是否启用
driver.findElement(By.id("...")).isEnabled()
sqougxex6#
这是一个迟来的答案,但因为我最近正在研究这个问题,我想分享我的解决方案。我实现了一个测试文本框是否为只读的方法。我正在做一个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
请注意:1.您需要使用属性value来获取输入的文本。1.测试结束后最好继续阅读前面的文章。1.代码只是展示核心思想的摘录,可能无法运行。
value
azpvetkf7#
下面是最适合我的代码。希望这将是有用的
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); }
x4shl7ld8#
我知道这已经得到了答案。但不幸的是,当我面临类似的问题时,我不得不花一些时间来寻找正确的解决方案。我同意.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);
rkkpypqq9#
这里是另一个答案,使用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);
这个答案是基于https://stackoverflow.com/a/28269518的,并且被简化了一些。在普通的Javascript中,它看起来像这样:
function isEditable(element){ if(element.nodeName==="INPUT" || element.nodeName==="TEXTAREA"){ return !element.disabled && !element.readOnly; }else{ return element.isContentEditable; } }
这解决了“readOnly”和“disabled”属性,并且可以用于任何类型的元素。
9条答案
按热度按时间7xzttuei1#
1.* * isEnabled()没有任何通用的只读内容。
1. * 字符串属性=元素. getAttribute("只读");即使没有"readonly",也不会使您的测试失败。在这种情况下,它返回null***,但我们需要例外。
像这样使用:
不要验证**getAttribute("readonly"). equals("true")**或类似信息,在不同的浏览器中,它也可能不同。(在IE中readonly ="readonly",在FF中readonly =""等)
kuuvgm7e2#
您可以尝试通过sendkeys()编写一些内容,并检查textbox的value属性是否未更改。
o2g1uqev3#
WebElement
接口有一个名为isEnabled的函数。lvmkulzt4#
因为我不知道你需要什么检查,我会张贴一些例子,可能是有用的。
=〉返回所有可编辑的文本输入字段
=〉可能需要try catch块
wyyhbhjk5#
使用selenium-java 2.21.0,您可以检查其是否启用
sqougxex6#
这是一个迟来的答案,但因为我最近正在研究这个问题,我想分享我的解决方案。
我实现了一个测试文本框是否为只读的方法。我正在做一个Django项目,所以代码是Python的,但我相信移植到Java很容易:
请注意:
1.您需要使用属性
value
来获取输入的文本。1.测试结束后最好继续阅读前面的文章。
1.代码只是展示核心思想的摘录,可能无法运行。
azpvetkf7#
下面是最适合我的代码。希望这将是有用的
x4shl7ld8#
我知道这已经得到了答案。但不幸的是,当我面临类似的问题时,我不得不花一些时间来寻找正确的解决方案。
我同意.getAttribute(“readonly”)返回null,但是为了处理它,我写了类似于下面的代码:
并致电:
rkkpypqq9#
这里是另一个答案,使用javascript
这个答案是基于https://stackoverflow.com/a/28269518的,并且被简化了一些。在普通的Javascript中,它看起来像这样:
这解决了“readOnly”和“disabled”属性,并且可以用于任何类型的元素。