Что такое xpath для контейнера этого списка HTML? - PullRequest
0 голосов
/ 23 декабря 2018

Будучи незнакомым с JUnit, меня интересует получение данных с веб-сайта - по крайней мере, на данный момент.

I см. что фрагмент расширяет базовый класс:

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?

Ответы [ 3 ]

0 голосов
/ 23 декабря 2018

Если вы хотите, чтобы <div class="side_categories"> соответствовал XPath, например

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

, вы можете попробовать

"//*[normalize-space()='Books']//ancestor::div[@class='side_categories']"
0 голосов
/ 24 декабря 2018

Xpath для категорий ссылок книги

//li/ul/li/a

Xpath для элементов книги

//ol/li
0 голосов
/ 23 декабря 2018

Хорошим вариантом является использование css-селектора, который надежнее, чем xpath.

Для книг ссылка

  1. .nav.nav-list css класс указывает на все категории книг.В css для использования имени класса мы используем . перед именем каждого класса
  2. , чтобы перейти к первому тегу li, используя >.Это означает следующий внутренний дочерний узел.
  3. перейти к первому якору a тег, который является ссылкой Книги

    driver.findElement(By.cssSelector(".nav.nav-list>li>a")).click();
    
...