0

下面是编辑字段的 HTML 代码。

<input class="inputField" id="CG.28443436.1.10.C.28443608.4.ATTATLD.28447933.DPSE.28447934.1.PSE.4974685.1.ATT.3115546.4.ATTRIBUTE" onmouseout="HideTextBoxValueinAltText()" onmousemove="DisplayTextBoxValueasAltText(this);" onfocus="closePopup(this.id);" onblur="enforceNumericEntry('','','',this.value,'Forward SCR/MCR', this, this.id,false);" type="text" size="30"/>

ID 是动态生成的。有没有办法识别这个对象?

这是编辑字段旁边的文本“Forward SCR/MCR”。

4

1 回答 1

0

使用 CSS 选择器。所以下面的css会读到类似的东西,"input of class name inputField which has id that starts with 'CG'"

WebElement element = driver.findElement(By.cssSelector("input.inputField[id^='CG']"));

或者

@FindBy(css="input.inputField[id^='CG']")
WebElement element

更新基于评论。

我建议您与开发人员交谈并要求他们为元素提供唯一属性,以便您可以正确使用 CSS 选择器。应用程序的可测试性很重要。也就是说,不幸的是,你总是不会赢得这样的战斗。去过也做过!

onBlur是事件而不是属性。我不能 100% 确定您是否可以在活动中使用 CSS。所以这是一个你可以做的肮脏的黑客。同样,不建议这样做。在您的页面中有一个私有方法,该方法将根据其值返回一个输入框。查看 DOM,此输入框的属性value设置为Forward SCR/MCR.

WebElement element = getInputElement(Forward SCR/MCR");

private WebElement getInputElement(String value) {
  List<WebElement> elements = driver.findElements(By.cssSelector("input.inputField[id^='CG']"));
  for(WebElement element:elements) {
     if(element.getAttribute("value").equals(value))
       return element;
  }
  throw new RunTimeException("Couldn't find an element with value "+value);
}
于 2013-05-20T17:50:27.163 回答