怎么得到所有li以下div内容selenium

时间:2016-05-11 18:14:26

标签: java selenium selenium-webdriver

如何获得所有<a>值?

<div id="mCSB_1_container" class="mCSB_container" style="position: relative; top: -985px; left: 0px;" dir="ltr">
  <li>
    <a href="#" rel="" class="" style="background-color: rgb(247, 247, 249);">All countries</a>
  </li>
  <li>
    <a href="#217" rel="217" class="">Germany</a>
  </li>
<div>

当我使用

List<WebElement> allElements = driver.findElements(By.xpath("//div[@id='mCSB_1_container']/li/a"));
        for (WebElement element: allElements) {
            System.out.println(element.getText());
        }

我得到空值。

3 个答案:

答案 0 :(得分:1)

List<WebElement> allElements = driver.findElements(By.tagName("a"));
     for(WebElement element: allElements)
    {
        System.out.println(element.getText());
    }

答案 1 :(得分:0)

Jsoup是一个很棒的html解析器,可以和Selenium一起使用。 这是Jsoup网页; https://jsoup.org/

如果你想从页面获得所有链接,你可以像这样使用Jsoup;

Document doc = Jsoup.connect("https://jsoup.org/").get();
        Elements links = doc.select("a[href]");

for (Element link : links) {
            print(link);
        }

此代码段允许您获取所有链接的所有href值。如果你想从网页上获取所有内容;

Elements links = doc.select("a");

而不是

Elements links = doc.select("a[href]");

答案 2 :(得分:0)

尝试以下选择器之一:

By.xpath("//div[@id='mCSB_1_container']/li/a")
By.cssSelector("#mCSB_1_container li a")
By.cssSelector("div[id='mCSB_1_container'] li a")
By.xpath("//*[contains(@id, 'mCSB_1_container')]/li/a")

或者其中一个findElements(我不知道Java是否包含对IWebElement的FindElements扩展,但它适用于其他语言):

List<WebElement> allElements = driver
    .findElement(By.id("mCSB_1_container"))
    .findElements(By.cssSelector("li a"));

List<WebElement> allElements = driver
    .findElement(By.id("mCSB_1_container"))
    .findElements(By.tagName("a"));

List<WebElement> allElements = driver
    .findElement(By.id("mCSB_1_container"))
    .findElements(By.xpath("//li/a"));

此外,如果没有人工作,请尝试使用以下内容查找休息时间:

By.cssSelector("#mCSB_1_container")    //Shoud find the id. 
By.cssSelector("#mCSB_1_container li") //Shoud find the li inside the id.

如果无法找到其中一个,则帧存在问题或等待元素显示