我目前正在机器人框架中使用Selenium2Library来自动化一些Web测试。目前,我在使用Click Element功能自动点击登录按钮时遇到了问题。
这是我想要使用的元素:
<a class="transparentBtn loginLink ng-scope" ng-click="commonService.gigyaRaasLogin()" translate="BTN_ADMIN_LOGIN_WATCHLIST">LOGIN</a>
如果我从控制台复制,这是xpath:
//*[@id="menu"]/div/div[5]/div/div/div[2]/ul/li[2]/a
如果我想点击此元素,我无法找到要使用的定位器。
这些是我到目前为止尝试过的一些事情:
Click Element css=a.loginLink
Click Element link=LOGIN
答案 0 :(得分:4)
我建议更灵活一些。如果您在定义灵活和唯一之间找到平衡,那么这是一种很好否则,最小的站点更改将破坏您的测试。
以下示例应匹配上一个示例:
匹配任何包含LOGIN文本的链接
Click Element //a[contains(text(),'LOGIN')]
匹配任何包含LOGIN文本的元素
Click Element //*[contains(text(),'LOGIN')]
匹配任何类属性等于&#34; transparentBtn loginLink ng-scope&#34;
的元素Click Element //a[@class="transparentBtn loginLink ng-scope"]
您可以同时检查多个属性
Click Element //a[@class='transparentBtn loginLink ng-scope' and @ng-click='commonService.gigyaRaasLogin()']
您可以使用contains()来检查类属性的字符串部分是否
Click Element //a[contains(@class,'loginLink')]
答案 1 :(得分:3)
尝试找到唯一的css(1个匹配的节点)或尝试此
Wait Until Element Is Visible xpath=//*[@id="menu"]/div/div[5]/div/div/div[2]/ul/li[2]/a 10
Click Element xpath=//*[@id="menu"]/div/div[5]/div/div/div[2]/ul/li[2]/a
答案 2 :(得分:0)
为了回答标题中的问题,Selenium2Library支持许多不同的定位器。最具表现力的是xpath,可用于查找任何内容。请参阅Selenium2Library documentation中的查找或指定元素部分。
在您的情况下,如果您点击链接,则click link link=LOGIN
应该有效。如果没有,可能是链接在iframe中,或者它可能被css隐藏(某些框架如angular和react会隐藏元素并用自己的东西替换它们)