Как написать XPath на основе элементов в Chrome Dev Tools? - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь получить XPath для подчеркнутых значений на изображении ниже.У меня есть список карт, который всегда отличается, и мне нужно получить значения изнутри выделенной карты, которая имеет «выделение» в своем классе.

Когда я беру XPath путем проверки элемента в Chrome, Я получаю что-то вроде //*[@id="rental-asset"]/div/div[1]/div/rdo-nav-card-asset[11]/div/div[1]/div/i, которое не работает для меня, так как 11 в скобках всегда будет иметь другое значение.Как я могу создать XPath для этих элементов на основе их уникального класса?

Chrome Dev Tools

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Вы можете разделить xpath и выполнить итерации в диапазоне, в котором они ожидаются.

Предположим, что они имеют это значение от 1-22, вы можете что-то вроде этого.Это код Python.

str1 = '//*[@id="rental-asset"]/div/div[1]/div/rdo-nav-card-asset['
str2 = ']/div/div[1]/div/i'
for i in range(1, 22):
    str3 = str1 + str(i) + str2
    a = driver.find_element_by_xpath(str3).text
    print a

Вы можете получить другие элементы или данные внутри цикла.

Комментарий ниже, если у вас возникли какие-либо сомнения.

0 голосов
/ 18 мая 2018

Сначала вы можете найти карточку выделения и использовать ее в качестве контекста поиска этих подчеркнутых текстов.

Код следующий:

var activeCard = driver.findElement(By.css('rdo-nav-card-asset > div.rdo-card-highlight'));

// the text of 1rd underline
var title = activeCard.findElement(By.css('.panel-title')).getText();

// the text of 2rd underline
var title = activeCard.findElement(By.xpath('.//div[@class='rdo-card-metric'][1]'))
           .getText();

// the text of 3rd underline
var title = activeCard.findElement(By.css('.text-danger')).getText();

// the text of 4rd underline
var title = activeCard.findElement(By.xpath('.//div[@class='rdo-card-metric'][3]'))
           .getText();
0 голосов
/ 18 мая 2018

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

//rdo-nav-card-asset/div[contains(@class,'panel') and contains(@class,'highlight')]/div[contains(@class,'panel-heading')]/div[contains(@class,'panel-title')]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...