我有一个以下元素(登录框):
<input type="text" style="font-family: Verdana; font-size: 11px; width: 180px;" id="ctl00_Content_ctl00_Login2_UserName" maxlength="50" name="ctl00$Content$ctl00$Login2$UserName">
因为我有一个Firebug,如果我右键单击该元素,它会给我XPath地址(//*[@id="ctl00_Content_ctl00_Login2_UserName"]
)。
根据Selenium website,我认为也可以通过 DOM 和 CSS 点击该元素。我该怎么做?是否有一个简单的工具(浏览器插件)可用于此目的?我只是不想被id和xpath限制。
答案 0 :(得分:1)
CSS定位器将是
css=#ctl00_Content_ctl00_Login2_UserName
DOM定位器将
dom=document.getElementById('ctl00_Content_ctl00_Login2_UserName')
答案 1 :(得分:0)
制定css标识符的另一种方法是:
css=input[id=ctl00_Content_ctl00_Login2_UserName]
如果您使用的是IDE,请制定标识符并单击“查找”按钮以确保IDE(以及RC)可以访问UI元素。
答案 2 :(得分:0)
您可以使用firepath。这是一个firebug扩展,非常适合制定CSS定位器。
答案 3 :(得分:0)
在Selenium中,为asp.net(4.0之前的)网站选择元素的更好方法是使用xpath:
//输入[含有(@ ID, '用户名')]
如果您在其他位置指定完整ID,则只要将控件包装在另一个面板中,定位器就会失败。当然,如果你的另一个输入的id包含UserName,你的xpath也会失败,但是这比你添加另一个面板包装的可能性要小得多(例如在一个主页中)。
关于始终使用id,答案是否定的。您可以使用许多其他类型的选择器,并且在大多数选择器中不需要使用ID。
请参阅Selenium reference并向下滚动到可以使用的其他类型选择器的“元素定位器”。