2015-10-07 3 views
1

У меня есть код ниже, который я пытаюсь извлечь из (идентификатор данных) определенного атрибута. Я новичок в использовании селена и страдал этим уже более суток.Поиск определенного атрибута, Selenium Xpath Java

Чтобы добавить контекст к этому, я расскажу вам немного о том, чего я пытаюсь достичь.

У меня есть веб-страница с аукционом, на аукционе есть идентификатор, все предметы на аукционе имеют уникальные идентификаторы, но все ссылки на оригинальный идентификатор аукциона. Я пытаюсь извлечь атрибут «data-id» элемента, но мне еще предстоит выяснить, как это сделать. Вот фрагмент кода, с которого я пытаюсь получить идентификатор.

<div class="dropdown open"> 
    <a class="dropdown-toggle form-control" href="#" data-toggle="dropdown"> 
    <ul class="dropdown-menu dropdown-menu-form" role="menu"> 
    <li id="liAuction4c42556772376a443736343d"> 
     <label class="checkbox"> 
     <input id="chkAuction4c42556772376a443736343d" class="auction" type="checkbox" data-caption="09-10-2015 10:30:00" data-id="4c42556772376a443736343d" checked="checked"/> 
09-10-2015 10:30:00 
     </label> 
    </li> 
    </ul> 
</div> 

Я был на многих форумах и искал всю Google и не нашел решение, которое работало для меня еще в противном случае я бы не размещать вопрос и посмотреть, как полный новичок.

Я попытался использовать .getAttribute, однако у меня были некоторые проблемы с этим, и код никогда не компилировался, я думаю, что я не сделал что-то правильно.

String dataID = selenium.findElement(By.xpath("//*[starts-with(@id, 'liAuction')]")).getAttribute("data-id"); 

Когда я попытался выше части «findElement» указывается красным и у меня есть следующее сообщение,

«Метод findElement (К) не определено для типа Selenium».

Если я изменю родительский подход вокруг, чтобы выглядеть так;

String dataID = selenium.findElement(By.xpath("//*[starts-with(@id, 'liAuction')]").getAttribute("data-id")); 

«не findElement» больше не указывается, однако теперь часть «.getAttribute» подчеркнуто красным, и я следующее сообщение, „Метод GetAttribute (String) не определено для типа К“

Я бы очень признателен за помощь в этом, так как я собираюсь выбросить свой ноутбук из окна, и я действительно не хочу потерять все свои файлы.

Заранее спасибо

Tony

ответ

1

Использование ниже XPath: -

//input[@id='chkAuction4c42556772376a443736343d']/@data-id 

Затем используйте: -

String dataID = selenium.findElement(By.xpath("//input[@id='chkAuction4c42556772376a443736343d']/@data-id")).gettext(); 

Полный код: -

static WebDriver driver=null; 
    public static void main(String[] args) { 
     driver = new FirefoxDriver(); 
     driver.get("URL"); 
     String dataID = driver.findElement(By.xpath("//input[@id='chkAuction4c42556772376a443736343d']/@data-id")).gettext(); 
     System.out.println(dataID); 
} 

Надеюсь, это вам поможет :)

+0

Привет спасибо за это, я могу видеть, как это должно работать, но у меня такая же проблема, по-прежнему, «findElement» подчеркнуто красным и подсказке сообщение «Метод findElement (By) не определено для типа Selenium ". это была моя головная боль –

+0

Я обновил свой ответ, можете ли вы попробовать полный код. добавьте необходимый код между ними, он должен работать –

+0

Спасибо за это, Не совсем правильный ответ, но указал на то, что я хотел. Я использовал следующее атрибут data-id. Ваш ответ помог больше, чем вы знаете, Еще раз спасибо Строковые данныеID = selenium.getValue ("// input [@ id = 'chkAuction4c42556772376a443736343d']/@ data-id"); –

2

Вы можете использовать метод getAttribute.

Сначала найдите элемент ввода, а затем извлечь данные идентификатор:

WebElement inputElement = selenium.findElement(By.id("chkAuction4c42556772376a443736343d")); 
String data-id = inputElement.getAttribute("data-id"); 
+0

Привет, спасибо за быстрый ответ, Я попытался предложить ваше предложение, но «драйвер» подчеркивается красным цветом и просит объявить переменную для Это. Правильно ли я предполагаю, что я должен заменить это на «селен»? Когда я его заменил, у меня такая же проблема описана в моем исходном сообщении –

+0

Извините, если это основной вопрос, но я новичок в этом и понятия не имею. –

+0

haha, извините, это то, что называется calle "selenium" in ваш код !, обновит мой ответ ;-) – drkthng

0

Привет, я предлагаю вам использовать следующий код. Он будет работать абсолютно нормально.

WebElement element = selenium.findElement(By.xpath("//input[@class='auction']")); 
String dataId= element..getAttribute("data-id"); 

Деталь

Я identifing объект с помощью следующей XPath //input[@class='auction'] и сохранить его в переменной WebElement.

затем Используя getAttribute() им получить строку из data-id

1

Благодарим Вас за hekp с этим, ребята, не ожидал получить ответ так быстро.

Мне нужно было использовать следующую строку для извлечения атрибута «data-id» элемента.

String dataID = selenium.getValue("//input[@id='chkAuction4c42556772376a443736343d']/@data-id"); 

Это закончилось тем, что было намного проще, что изначально думал, я хотел бы поблагодарить @Shubham джайном за помощь в его предложении указал мне, где я должен быть.

Я надеюсь, что это помогает другим в будущем

+0

Thanx :) .. проголосуйте :) –

Смежные вопросы