我对自动化有点新意,并且我正在自动学习所有内容,所以请原谅我,如果我的术语有点偏离。我一直在寻找这个问题的答案,而我似乎找不到任何东西。我认为这是我的小词汇,无论如何... ...
我正在尝试编写一个测试,通过使用录像机执行完成教程所需的所有操作。但是,对于一个特定步骤,元素ID会发生变化。例如,我正在尝试点击的ID是:
//li[@id='message_661119']/div[2]/div[2]/a/img
但是,对于正在执行教程“quest”的每个新用户,id的数量会发生变化。
有没有让Selenium识别或使用通配符?例如:
//li[@id='message_******']/div[2]/div[2]/a/img
当然,上面的例子不起作用。
任何建议都会非常有帮助。谢谢!!
答案 0 :(得分:9)
您可以使用starts-with()
:
//li[starts-with(@id, 'message_')]/div[2]/div[2]/a/img
这是Selenium starts-with()
文档中Locating Techniques中提到的示例之一。
答案 1 :(得分:1)
在Selenium IDE中的命令的Target字段中,您可以看到message_123123,单击下拉列表并选择与xpath:idRelative相关的选项,或者如果此选项不起作用,则尝试其他不包含烦人的选项message_123123所以这样你就可以通过它的位置而不是id来识别网页元素。我这样解决了我的问题