Robot Framework-Selenium中无法找到Jenkins登录按钮定位器的问题
Jenkins登录按钮定位器问题解决思路
兄弟,我刚学Robot Framework的时候也碰到过Jenkins登录按钮定位的坑!你现在用户名和密码的定位器(name=j_username、name=j_password)都找对了,但登录按钮因为Jenkins默认没给它配置name或id属性,所以得换个思路来定位。
先看看你目前的Robot代码片段:
Enter User Name Input Text name=j_username ${Username} Enter Password Input Text name=j_password ${Password} Click Login click button submit-button
还有你提供的部分HTML结构:
class="clear"> <div id="side-panel"></div> <div id="main-panel"> <a name="skip2content"></a> <div style="margin: 2em;"> <form method="post" name="login" action="j_acegi_security_check" style="text-size:smaller"> <table> <tr> <td>User:</td> <td> <input type="text" name="j_username" id="j_username" ...
给你几个靠谱的解决方案,按优先级推荐:
方案1:直接提交登录表单(最稳定)
不用找按钮,直接用Submit Form关键字提交整个登录表单,这在表单结构稳定的情况下最省心:
Enter User Name Input Text name=j_username ${Username} Enter Password Input Text name=j_password ${Password} Submit Login Form Submit Form name=login
这里name=login是你HTML里表单的name属性,直接提交它就会触发登录操作,完美绕开按钮定位的问题。
方案2:通过表单+按钮类型定位(精准)
如果一定要点击按钮,可以用XPath定位表单里的提交按钮,因为Jenkins登录按钮是type="submit"类型:
Enter User Name Input Text name=j_username ${Username} Enter Password Input Text name=j_password ${Password} Click Login Click Button xpath=//form[@name='login']//input[@type='submit']
方案3:通过按钮的value属性定位
Jenkins默认登录按钮的value属性是Log in(不同语言版本可能有变化,比如中文是“登录”),你可以直接用这个值定位:
Enter User Name Input Text name=j_username ${Username} Enter Password Input Text name=j_password ${Password} Click Login Click Button value=Log in
你可以先试试方案1,简单又稳定,要是非要点击按钮的话,方案2的XPath定位兼容性最好,不管按钮有没有其他属性都能找到它。
内容的提问来源于stack exchange,提问作者Nilesh
相关产品推荐
相关产品推荐

