0

Я сделал следующий запросСлишком много результатов при нахождении в пределах элемента с Selenium WebDriver

parts.get(i).findElements(By.xpath("//li[starts-with(@class, '_lessons--row-')]")) 

и вернулись десятки результатов, в то время как я вижу в инструментах разработчика, что не более чем 3 из них.

parts.get(i) возвращает 1 WebElement.

Похоже, что он ищет не детей данного элемента, а всю страницу. Может ли двойная косая черта вызвать это? Что означает двойная косая черта в XPath?

+0

'' // коротка для '/ потомок или автопортрета :: узел() /'. Дополнительную информацию см. В https://www.w3.org/TR/xpath/#path-abbrev. –

+0

«потомок или сам» звучит противоречащим тому, что говорят другие (от корня)? – Dims

+0

Посмотрите на ссылку выше. Прокрутите мимо примеров в начале этого раздела и прочитайте последние несколько абзацев. Он объясняет как '//' и '.', так и то, как они работают вместе. –

ответ

2

Ваш xpath неисправен здесь.

"//li[starts-with(@class, '_lessons--row-')]" 

// поиск от корневого уровня, чтобы найти узел preappend .:

".//li[starts-with(@class, '_lessons--row-')]" 
0

Try ваш XPath с .//, как правило, вы должны начать с XPath "" чтобы остановить поиск элементов из корня.

.//li[starts-with(@class, '_lessons--row-')] 
0

// Соответствующие относительные данные. который начинается с корня документа. В вашем случае вы пытаетесь найти с помощью

//li[starts-with(@class, '_lessons--row-')] 

Таким образом, он вернет все совпадения в вашем html. Если вы хотите найти определенную часть элемента с class, отправьте текст _lessons--row-. Вы должны сделать свой xpath более конкретным.

например

//div[@id='someid']//li[starts-with(@class, '_lessons--row-')]