麻烦findElement,比基本的xpath,id或类情况更复杂

时间:2016-02-14 07:53:18

标签: java selenium selenium-webdriver

javadoc

照片显示了我正在使用的内容。对于4只动物中的每只动物,我需要选择相关的数量(它总是tr中的第3个td)。在下面的html中,您可以看到zebra的数量为1,而lion的数量为1。

我在课堂上找不到。也许你告诉我为什么。是因为字符串中的空格吗?

简单的xpath不起作用,因为tr标签会根据前一页上的用户输入而改变。

我也尝试用xpath选择contains方法无济于事。也许我只是做得不对。

2 个答案:

答案 0 :(得分:0)

是的,如果Name中有空格,则不能使用className定位器,而是必须使用cssselector或xpath。

    // css selector
    driver.findElement(By.cssSelector(".line_item.Zebra"));
   //xpath should also work 
    driver.findElements(By.xpath("//*[@class='line_item Zebra']"));

答案 1 :(得分:0)

line_item Zebra是同一WebElement的两个类。您只能通过className找到其中一个

driver.findElement(By.className("Zebra"));

如果您想要所有动物,可以使用line_item课程。这会给你所有的动物

List<WebElement> animals = driver.findElements(By.className("line_item"));

animals现在包含类line_item的四个元素的列表。要获得每个<td>中的第三个WebElements,您可以使用列表中的for (WebElement animal : animals) { List<WebElement> tds = animal.findElements(By.tagNmae("td")); // all the <td> tags in that animal String quantity = tds.get(2).getText(); // get the text of the third <td> }

Actor