2

我的元素的 xpath 变得非常难以阅读。

//div[@id='main_content']/div[2]/div[2]/div[2]/div[4]/table/tbody/tr[2]/td/form/fieldset/p[1 ]/输入

如果我可以将其中的大部分存储为变量并在以后像这样使用它,那就太好了:

| 断言元素呈现 | ${myForm} 。/fieldset/p[1]/输入 |

这样的事情可能吗?这将使我的测试更容易阅读!

4

2 回答 2

5

真的应该将你的 selenium espressions 锚定在元素的 ID 中。在 2 个月内,没有人会对 xpath 指向的内容有丝毫的了解,尤其是在您需要找出原因时测试被破坏的情况下。我们经常将 id 添加到元素中,以使测试更容易。我们已经学会接受我们以一种特殊的方式编写 Java 代码以使其可测试,而且我认为 HTML 也可以。

于 2008-12-31T19:19:33.857 回答
1

你可以写:

store | //div[@id='main_content']/div[2]/div[2]/div[2]/div[4]/table/tbody/tr[2]/td/form | myForm
assertElementPresent | xpath=${myForm}/fieldset/p[1]/input

然而,正如 Krosenvold 所说,长 xpath 可能非常脆弱。如果您担心代码的可读性,并希望将所有定位器放在一个文件中,您可以在其中进行级联更改,您可能需要考虑使用 UI-Element 映射。

于 2009-07-23T08:15:35.563 回答