xPath работает для последней страницы, но не для первой - Selenium Java - PullRequest
0 голосов
/ 15 декабря 2018

Я хочу извлечь некоторые данные из NCBI , используя Selenium в Java

Проблема в том, что xPath /html/body/div[2]/div[1]/form/div[1]/div[5]/div/div[5]/div[" + i + "]/div[2]/p/a получает заголовок каждой статьи на странице и нажимает на них, работаетдля последней страницы, но не для первой страницы, и я не мог понять, почему.

driver.findElement(By.xpath("/html/body/div[2]/div[1]/form/div[1]/div[5]/div/div[5]/div[" + i + "]/div[2]/p/a")).click();

1 Ответ

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

Я подозреваю, что это ошибка off-by-one , так как индексирование XPath начинается с 1, а наличие div[0] не будет ничего совпадать.

В общем, хотя Ваше выражение очень хрупкое , так как оно является абсолютным выражением, путь которого начинается с самого корня дерева HTML и до желаемого элемента, проходящего через каждого родителя.Любое незначительное изменение макета нарушит его.

Вместо этого мы можем серьезно упростить выражение:

//div[contains(@class, 'rslt')]/p/a

это будет соответствовать всем 20 ссылкам на странице.

Или, еслиВы предпочитаете более краткие CSS-селекторы:

driver.findElements(By.cssSelector(".rslt > p > a"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...