我正在冒险进行前端测试。为了让这个任务感觉更轻松,我使用的是selenium builder,但是我很难在下拉菜单和旋转横幅上定位链接。
为简单起见,我将坚持使用下拉菜单作为示例(我假设它们都将通过定位正确的路径来解决)
Selenium构建器生成JSON文件。我认为调整这个文件可能是我的问题的答案,但我正在努力找出我可以做出的调整来定位我追求的链接。
我定位的HTML
<div id="locale-switcher" style="display: none">
<li class="language-switcher OneLinkNoTx">
<a href="#language-options">Select language</a>
<ul id="language-options">
<li><a class="modal-link" href="#currency-change" rel="/uk/store/" onclick="confirmStoreSwitch(this.rel);">English</a></li>
<li><a class="modal-link" href="#currency-change" rel="/other/store/" onclick="confirmStoreSwitch(this.rel);">Other</a></li>
</ul>
</li>
</div>
生成的json文件
{
"type": "script",
"seleniumVersion": "2",
"formatVersion": 2,
"steps": [
{
"type": "get",
"url": "http://www.mySite.co.uk/uk/store/"
},
{
"type": "clickElement",
"locator": {
"type": "link text",
"value": "English"
}
}
],
"data": {
"configs": {},
"source": "none"
},
"inputs": []
}
该程序还建议替代目标所需的元素,在这种情况下:
“type”:“clickElement”建议alt1:
"locator": {
"type": "css selector",
"value": "a.modal-link"
}
“type”:“clickElement”建议使用alt2:
"locator": {
"type": "xpath",
"value": "//ul[@id='language-options']//a[.='English']"
}
“type”:“clickElement”建议使用alt3
"locator": {
"type": "xpath",
"value": "//div[1]/header/nav/ul/li[1]/ul/li[1]/a"
}
但是没有这些建议正在发挥作用。如何定位所需的元素?
答案 0 :(得分:0)
我终于解决了它。答案是没有调整JSON文件,因为即使您传递了有效的JSON,它也可能不被selenium builder读取。
最终答案是获得正确的xpath,而不是尝试单击该元素,但要验证它,存储并检索它。
获取xpath(使用firebug) 导航到您定位的链接 右键单击并选择“使用firebug检查元素” 右键单击元素(或文本)本身,然后选择copy xpath
Selenium构建器也会通过单击链接为您提供xpath,但它会设置命令 clickElementAttribute ,您需要更改它。
下面列出了我在selenium构建器中定位下拉菜单项的顺序:
获取 [www.myHomePage.com]
verifyTextPresent [可见菜单链接]
storeElementAttribute locator [xpath to hidden item],属性名称 href,变量链接
verifyElementAttribute locator [xpath to hidden item],属性名称 href,变量 $ {link} < / p>
获取 $ {link}
waitForCurrentUrl [/ url / you / are / targeting]
请注意链接和$ {link}是变量,应按上面所述编写。您可以对旋转横幅使用相同的技术,也可以使用命令 waitForTextPresent clickElementAttribute