0

由于不熟悉JUnit,我有兴趣从网站上抓取数据——至少现在是这样。

看到片段扩展了一个基类:

import org.junit.Test;

public class PageFragmentsExampleTest extends TestBase {

    @Test
    public void shareSecondPost()  {
        FacebookSportPostsPage facebookPage = FacebookSportPostsPage.open();
        FacebookPostFragment secondPost = facebookPage.getPostByIndex(2);
        secondPost.share();
    }

    @Test
    public void sharePostFromDate()  {
        FacebookSportPostsPage.open().getPostByText("April 16 at 7:35am").share();
    }

}

但是该片段是如何使用的?似乎container被传递给了片段构造函数。

图书目录container是什么?

使用inspect element我得到xpath/html/body/div/div/div/aside/div[2]/ul/li/a“书籍”链接。

xpath但是,这与示例字符串有很大不同

"//*[contains(text(),'%s')]//ancestor::div[@class='%s']", (text, POST_CONTAINER_CLASS)`

xpath“书籍”目录是什么container

4

3 回答 3

1

链接书类别的 Xpath

//li/ul/li/a

书籍项目的 Xpath

//ol/li
于 2018-12-24T02:40:22.093 回答
1

如果你想<div class="side_categories">被 XPath 匹配,比如

"//*[contains(text(),'%s')]//ancestor::div[@class='%s']", (text, POST_CONTAINER_CLASS)

你可以试试

"//*[normalize-space()='Books']//ancestor::div[@class='side_categories']"
于 2018-12-23T20:16:41.353 回答
1

一个不错的选择是使用比 xpath 更可靠的 css 选择器。

书籍链接

  1. .nav.nav-list css 类指向所有 Books 类别。在 css 中使用类名,我们.在每个类的名称之前使用
  2. 使用移动到第一个li标签>。这意味着下一个内部子节点。
  3. 移动到第一个锚a标记,即书籍链接

    driver.findElement(By.cssSelector(".nav.nav-list>li>a")).click();
    
于 2018-12-23T20:07:47.477 回答