如何使用Robot Framework处理动态元素

我目前正在研究Robot Framework并使用Selenium2Libraries来处理Web应用程序。 我正在处理一个Form,我正在处理一个动态元素,这是一个可编辑的文本区域和下拉列表。

我真的希望有人能指导我如何做到这一点。 我正在做的一个例子是,

[示例元素代码]

input id="textfield-1237-inputEl" class="x-form-field x-form-text x-form-text-default x-form-focus x-field-form-focus x-field-default-form-focus" data-ref="inputEl" size="1" name="textfield-1237-inputEl" maxlength="200" role="textbox" aria-hidden="false" aria-disabled="false" aria-readonly="false" aria-invalid="false" aria-required="false" autocomplete="off" data-componentid="textfield-1237" type="text" 

任何有关这方面的信息将非常感激。 谢谢!

有许多类型的标识符可用。您可以搜索,如果值是动态的,您可以使用Xpath标识符来查找定位符.Id只能用于静态值。 在上面的例子中,您可以使用Xpath作为

的xpath = // * [含有(类型(), ‘文本’)]

因为文本是静态的。它不会改变。

当试图处理动态ID和没有关于它们的简单UID的元素时,解决这个问题的最佳方法是使用Xpath 。

Xpath基本上是HTML中元素的位置。 这是解决没有ID随时可用的问题的最好方法(我的工作在我可以使用的任何地方都没有ID,因此我别无选择,只能使用Xpath)

如果使用正确,Xpath真的很强大。 如果不是它们真的很脆弱,可能是一个难以维持的噩梦。 我会给你一个你可能必须使用的潜在Xpath的例子:

 Select From List By Label xpath=(//select)[2] DropDownItem1 

你说你有一个下拉。 这是你会看到的潜在“看起来像”。 这里的Xpath基本上是说,在整个HTML页面的任何地方找到你找到的第二个下拉列表。

Xpaths需要一段时间才能完成,特别是如果你有使用ID的luxurary。 我用来定位和调试Xpath的工具是:

萤火

Selenium IDE

我现在主要使用Selenium IDE,因为它是一个很好的工具,它基本上允许你在HTML中“选择”一个元素,它会喷出它的ID,CSS路径,Xpath,DOM等…不仅如此,当你来发现更复杂的X路径,有一个“查找”工具,可以直观地显示你的Xpath指向的位置(或者不是,如果它错了)

真正帮助我的是这个 。 它非常有用,并且有很多例子可供你反对。

如果您有任何问题,请回复并尽力帮助

更多例子:

 Click Element //span[contains(text(), 'Submit')] Input Text xpath=(//textarea)[3] Some Random Text! 

与其他答案一样,我建议您使用Xpath。 使用Xpath可以通过识别该元素与其周围的其他元素的关系来指向元素。 所以我的建议是找到一个可以用作起点的静态元素。

例如:起点有静态id:xpath = // td [@ id =’startingPoint’] / follow-sibling :: select [1]

起始点没有id但是有静态文本(通常是字段的标签):xpath = // td [contains(text(),’Field Label’)] / following-sibling :: select [1]

如果你能告诉我们这个元素是什么……我们可以为你提供更好的例子..

我所做的是改变Xpath,例如:

//*[@id="cec9efb093e14182b361766c26fd1919"]/section/div[1]/ticket/div/div/input

并取出动态生成的Id cec9efb093e14182b361766c26fd1919切换为我设置为生成Id的父元素的autoId 。 这是一个廉价的修复,但如果只生成一个父元素,它就可以工作。

所以父元素添加了autoid=container属性,并在机器人代码中将其引用为[@autoid="container"]/section/div[1]/ticket/div/div/input

Interesting Posts