使用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']来识别该特定标签。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top