我有一个模态窗口,其中有一些文本框。我曾经使用className输入文本以获取所有表单字段并为文本框建立索引。如今,模式已发生变化,开发人员为我提供了每个盒子的ID。我正在尝试执行的操作只是输入文本并单击“提交”按钮,但是发生的情况是有时有时会部分插入字符串。
假设我要输入“ System1”字符串,但有时WebDriver输入“ Sys”或“ Sy”等。然后单击
我试图通过ID,XPATH定位元素... 但要点是,我可以看到文本在字段中的位置,以便元素可以正确定位
还有另一个问题。为了确保文本框在.senKeys()方法之后包含什么,我放置并断言应该通过.getText()方法从文本框中获取文本,并将其与我传递给main方法的字符串进行比较,但是我在这一点上变得空了,我可以看到WebDrivers在功能上输入了什么内容(完成与否) 请注意,我在.sendKeys()和.getText()方法中都使用了相同的WebElement对象
这是我正在运行的代码,简单的AF:
//Locating the TextBox
@FindBy(how = How.ID, using = "text")
public WebElement nameField;
public void introducirEnCampoNombre(String name) {
//nameField.clear();
nameField.sendKeys(name);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
String xpectedString = nameField.getText();
Assert.assertEquals(name, xpectedString);
}
以下是相关的HTML代码:
<form id="systemForm" action="/ik-conf/systemAction/save" method="POST">
<input id="id" name="id" type="hidden" value="">
<input id="parentNode.id" name="parentNode.id" type="hidden" value="1">
<div class="row">
<div class="left lv-text-label">
<label for="text" class="right-label inline">Nombre(*):</label>
</div>
<div class="right lv-text-input">
<input id="text" name="text" autofocus="autofocus" validation="/ik-conf/system/nameValidation" class="ikconf-fieldset width_100x100" type="text" value="">
</div>
</div>
<div class="row">
<div class="left">
<label for="description" class="right-label inline">Descripción:</label>
</div>
<div class="right">
<textarea id="description" name="description" style="margin-bottom:0px;" class="width_100x100 z-label" rows="3" cols="40"></textarea>
</div>
</div>
因此,正如我在上文所述,在正确插入字符串之前,代码将用于“提交”按钮(在下一个方法中)。调试时,我可以检查字符串是否正确,然后是第二个问题。我尝试在方法中再次查找具有另一个名称的相同元素,但结果相同,.getText()返回空值
希望有人可以在这里带来一些启发。
预先感谢
答案 0 :(得分:1)
您现在正在使用的行,
String xpectedString = nameField.getText();
将返回该输入元素的innerHTML。我不确定在该输入字段中键入的文本是否在innerHTML中,可能在“值”属性中。因此,尝试将其定义为
String xpectedString = nameField.getAttribute(“value”);
答案 1 :(得分:-1)
我以前见过。我认为这是由于页面加载问题引起的……就像页面加载到某个点,然后完成加载导致根据时间的变化导致文本截断一样。您可能会做两件事。
INPUT
是否过时。如果是这样,请等待过时,然后输入文本。.sendKeys()
和验证放在循环中并删除断言。最多说3次循环,每次重新输入文本直到成功。如果达到最大尝试次数,则测试失败。