Selenium Webdriver - 从动态表访问数据

时间:2016-03-02 03:47:54

标签: java xpath selenium-webdriver

我正在使用Selenium webdriver和Java自动化Web应用程序中的一些功能测试用例。我有一个表格,我可以添加新员工。添加新员工后,可以在另一个页面中看到添加的员工详细信息。我想验证添加的员工详细信息,最后从视图页面中删除该员工。 每个添加的员工详细信息都显示在视图页面的单独表中。每个表的xpath如下

.//*[@id='contentSec']/div/div[1]  
.//*[@id='contentSec']/div/div[2]
.//*[@id='contentSec']/div/div[3]
and so on...

问题是如何获取上次添加的员工表的xpath以验证员工详细信息。我无法使用员工姓名或任何员工详细信息进行搜索,因为多名员工可能具有相同的详细信息。我想要一个通用的方法来访问应该始终有效的员工详细信息。我用了

List<WebElements> elements=driver.findElements(By.xpath(".//*[@id='contentSec']/div"));

elements.size();
即使存在多个表,

也始终返回1。有没有方法可以访问上次添加的员工详细信息?

2 个答案:

答案 0 :(得分:0)

听起来你错过了最后的/div来获得父div内的div内部:

.//*[@id='contentSec']/div/div
  

是否有任何方法可以访问上次添加的员工详细信息?

在这种情况下,您可以使用last()

.//*[@id='contentSec']/div/div[last()]

答案 1 :(得分:0)

所以,你在寻找元素的过程中犯了一个小错误。

应该是findElements而不是findElement

List<WebElements> elements=driver.findElements(By.xpath(".//*[@id='contentSec']/div"));

driver.findElement将始终寻找元素的第一个准确性,这就是为什么在尝试使用1

获取size时始终获得elements.size()的原因