Selenium - 如何选择具有可变文本的元素

时间:2017-04-07 13:40:25

标签: java selenium

   NSMutableDictionary *result = [[NSMutableDictionary alloc]init];
   for (NSDictionary *dict in yourArray)
 {
    [result addEntriesFromDictionary:dict];
 }

知道如何选择订单号吗?我使用Selenium 2.我试过这个:

Alert alert = driver.switchTo().alert();
alertText = alert.getText();

但它没有用。 Xpath2是否支持正则表达式?

订单的编号总是不同,但XXX-XXXXXX的样式始终相同。

2 个答案:

答案 0 :(得分:1)

只需尝试

driver.findElement(By.xpath("//div[@class='order-number']//strong")).getText();

另请注意,selenium支持matches()中的XPath。您的问题的原因似乎是缺少右括号:

现在

matches(text(),'\\d+-\\d+' 

应该是

matches(text(),'\\d+-\\d+')

工作

//h3/strong[matches(text(),'\d+-\d+')]

答案 1 :(得分:1)

另一种方法是使用CSS选择器进行搜索:

By.cssSelector(".order-number H3 STRONG")

如果页面结构发生了变化,那就更加脆弱了。

更好的解决方案(如果您能够更改页面代码)是在<strong>标记上添加ID并使用By.id。与XPath或CSS-Selectors相比,它更快,更脆弱,更易读。