我目前正在开发Robot Framework并使用Selenium2Libraries来处理Web应用程序。我正在处理一个表单,我正在处理动态元素,这是一个可编辑的文本区域和下拉列表..
我真的希望有人能指导我如何做到这一点。我正在做的一个例子是,
[示例元素代码]
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"
有关此的任何信息将非常感谢。谢谢!
答案 0 :(得分:1)
有许多类型的标识符可用。您可以搜索,如果值是动态的,您可以使用Xpath标识符来查找定位符.Id只能用于静态值。 在上面的例子中,您可以使用Xpath作为
的xpath = // * [含有(类型(), '文本')]
因为文字是静态的。它不会改变。
答案 1 :(得分:1)
当尝试处理动态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,因为它是一个很好的工具,它基本上可以让你选择" HTML中的一个元素,它会喷出它的ID,CSS路径,Xpath,DOM等......不仅如此,当你发现更复杂的X路径时,还有一个" Find"用于直观地显示Xpath所指向的工具(或者不是,如果错误的话)
真正帮助我的是This。这真的很有用,并且有许多例子供你反对。
如果您有任何问题,请回复并尽力帮助
更多例子:
Click Element //span[contains(text(), 'Submit')]
Input Text xpath=(//textarea)[3] Some Random Text!
答案 2 :(得分:0)
与其他答案一样,我建议您使用Xpath。 使用Xpath可以通过识别该元素与其周围的其他元素的关系来指向元素。所以我的建议是找到一个可以用作起点的静态元素。
例如: 起点有静态id: 的xpath = // TD [@ ID = '起点'] /以下同胞::选择[1]
起点没有id但有静态文本(通常是字段的标签): xpath = // td [contains(text(),'Field Label')] / following-sibling :: select [1]
如果你能告诉我们这个元素是什么......我们可以为你提供更好的例子..
答案 3 :(得分:-1)
我所做的是改变Xpath,例如:
//*[@id="cec9efb093e14182b361766c26fd1919"]/section/div[1]/ticket/div/div/input
并取出Id
动态生成的内容cec9efb093e14182b361766c26fd1919
以切换{I}设置为生成Id的父元素。它是一个廉价的修复程序,但如果只生成一个父元素,它就可以工作。
所以父元素添加了属性autoId
,我在机器人代码中将其引用为autoid=container