如果ID的开头始终相同,是否可以搜索动态按钮?

时间:2014-01-17 05:06:22

标签: selenium xpath findby qwebelement

我在一些自动化测试中使用Selenium。在某个页面上,我需要单击一个按钮。这个页面被多次使用,当我最初尝试使用完整的xpath时,它可以在其中一个页面上工作,但不能在另一个页面上工作。每个页面的完整xpath略有不同,所以我不想使用它。

按钮的xpath如下所示

.//*[@id='approve-gen8149262f2cdc49958632185c33b8e82f']

在两个页面上,id始终以approve开头,然后获取一些生成的数字。

我想知道是否有办法只搜索id的一部分,所以我可以寻找“批准”以找到我需要点击的按钮。

到目前为止,我已经尝试了许多没有运气的事情。

4 个答案:

答案 0 :(得分:3)

您还可以使用CSS选择器:

[id^="approve"]

答案 1 :(得分:1)

使用XPath,您可以选择其中一个属性以给定字符串开头的元素。例如:

//*[starts-with(@id, "approve-gen")]

另见:

答案 2 :(得分:0)

您也可以将xpath与contains一起使用。例如。 //*[contains(@id, 'approve-gen')] 确保没有其他ID以“approve-gen”开头的定位器。

答案 3 :(得分:0)

使用 步骤1: 从Given Info我已经把CSS Selector假设为

CSS =按钮[ID * ='批准根']

同时查找将带来唯一性的其他属性按钮。

第2步:

执行单击按钮

driver.findElement(By.cssSelector("按钮[ID * ='批准根']&#34))。单击();