-
19-09-2019 - |
题
使用ASP.NET,标签ID非常波动,因此为了使我的测试更加可靠,我想通过其标签文本找到元素。我已经与Watin一起玩了一些,但它做得很好,但是如今这个项目似乎已经死了,所以我想在决定框架之前也要研究硒。
我的html看起来像这样
<label for="ctl00_content_loginForm_ctl01_username">Username</label>:
<input type="text" id="ctl00_content_loginForm_ctl01_username" />
我不想打字:
selenium.Type("ctl00_content_loginForm_ctl01_username", "xxx");
这太依赖于ID。在沃丁,我会写:
browser.TextField(Find.ByLabelText("Username")).TypeText("xxx");
有没有办法在硒中做到这一点?
解决方案
我相信您可以通过以下内容做到这一点:
selenium.Type(selenium.getAttribute("//label[text()='Username']/@for"), "xxx");
text()='username'位获得您想要的标签,然后 /@for for five five face tock face for for for for for'for for''属性。
小心: 这没有进行测试(对此表示歉意!),但我认为它会根据IDE插件中的一些工具起作用
其他提示
这起作用:
//input[@id=(//label[text()="Username"]/@for)]
说明:由于您正在寻找输入:
//input[@id=("ctl00_content_loginForm_ctl01_username")]
用标签的属性值替换“ ctl00_content_loginform_ctl01_username”:
//label[text()="Username"]/@for
好的,这可能已经一岁了,但是他们嘿。这将选择包含文本“用户名”标签下的第一个输入。
//label[text()='Username']/input
我通常更喜欢使用contains(),因为我发现有些浏览器正在将烦人的空间添加到偶尔的元素中:
//label[contains(., 'Username')]/input
请注意,输入之前的单斜杠表示它只会向下看一个级别,在该级别上,双斜杠将检查标签下的所有级别。使用XPATHER进行Firefox创建和检查您的XPATH,这非常有用。
是的,您可以使用XPATH,CSS或DOM定位器来识别您的元素。在此示例中,您的xpath看起来像// lable [@for ='ctl00_content_loginform_ctl01_username']来识别该特定标签。
不隶属于 StackOverflow