我正在开发一个Robot Framework测试,有效地点击两个元素(工作正常),然后确认你想在HTML中弹出的对话框中做某事(所以,不是警报) . 一切正常,直到对话框 . 该框包含总共两个按钮 . 这些按钮在HTML中具有 <button>
标记名称,但是使用Angular JS创建,并且文本为"Yes"和"No" . 我想点击标有"Yes"的那个 . 我知道的每个定位器方法都选择标记为"Yes"的按钮,然后单击标记为"No"的按钮,而我单击"No"所做的一切工作正常 .
我不能发布HTML本身(专有)或我的精确机器人框架代码和变量(专门为专有网站编写,他们明确提到网站的部分,所以我更喜欢错误地“不被解雇/ /起诉“) . 上面的信息非常通用,幸运的是,它几乎可以应用于任何不使用标准弹出消息的网站,并且是用Angular JS编写的,所以我可以解决这个问题 .
但是,这是我的机器人框架代码的一般化版本,它有麻烦 .
Click Element ${item}
Sleep 1s
Click Element ${edit_button}
Sleep 1s
Click Element ${yes_button}
我尝试使用xpath(generalized和full),dom形式为dom = document.getElementsByTagName("button")[0](在浏览器控制台中找到的位置),将其更改为 Click Button Yes
,然后通过text "Yes"使用以下(完全通用且可共享)关键字:
Click Element by Text
# EXAMPLE USAGE
# Click Element by Text "text on the element" id="midlevellocationoftext" button
# NOTE: Does not account for extra spaces at the beginning or end, text must be exact
# NOTE: Allows for injections on purpose to allow user to be more exact with their location
[Arguments] ${text} ${location}=* ${elementtype}=*
Click Element xpath=//*[@${location}]//${elementtype}[text()=${text}]
完全有可能问题不是我的代码而是HTML / AngularJS,但在手动测试中,元素仍然是可点击的,所以我必须找到一种方法来点击它 . 只是为了消除通常的可能性,它没有id,类是两个按钮之间的长期和共享级别(除了点击操作“检查”和“关闭”),以及框的位置逐个像素从屏幕大小更改为屏幕大小,并且不会在我的屏幕大小上运行 .
涵盖其他潜在问题:我知道它不遵循可访问HTML的标准做法;我有ExtendedSelenium2Library,集合,操作系统和两个自定义库(两者都没有使用);我在Google Chrome上工作;我不是开发人员;并且开发人员忙于在网站的其他部分工作,因为测试开发人员无法单击一个按钮,因此需要在最后期限内添加ID .
所以,我向社区提出的问题:我没有尝试过什么,我可以尝试什么,为什么经过验证的解决方案不起作用?如果您需要更多具体信息,我会尽我所能 . 如果你能以某种方式认识到这是Angular JS或HTML中的一个错误,并以某种方式知道潜在的修复,那真棒 . 让我知道所以我可以让开发人员知道 .