2008-12-31 95 views
2

我的元素的xpath变得非常难以阅读。Selenium:是否可以将xpath与变量连接起来?

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

这将是很好,如果我能大部分的存储作为一个变量并在以后使用它像这样:

| assertElementPresent | $ {myForm}。/fieldset/p [1]/input |

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

回答

5

真的应该将你的硒espressions固定在元素的ID元素上。在2个月内,没有人会最清楚xpath指向什么,特别是如果测试在你需要查明的时候中断。为了简化测试,我们经常为元素添加id。我们已经学会了接受我们以特殊的方式编写Java代码以使其可测试,并且我认为HTML也可以。

+0

我完全同意你的看法。我给出的例子可能不是最好的证明为什么我试图完成这一点。我试图这样做的原因是因为元素ID是随机生成的,所以我不知道它们是什么。 – Andrew 2008-12-31 21:23:05

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元素映射。