t.me/atinfo_chat Telegram группа по автоматизации тестирования

как достучаться до элементов без id (java)

Теги: #<Tag:0x00007f7486f81540> #<Tag:0x00007f7486f81450> #<Tag:0x00007f7486f81360> #<Tag:0x00007f7486f81248> #<Tag:0x00007f7486f81108>

как достучаться до элементов без id

Мне необходимо проверить что регистрация успешная… Соответственно я проверяю соответствие строки " Учетная запись на сайте site.ru создана!"

По всякому уже пытался сделать, но верстал какой то тормоз очевидно
Искал и по классу и по css селектору

Как вообще в таких ситуациях поступать, ссылку дайте может на статью какую

Код

<div class="contentbar cabinet" id="content"> 
<h1 class="page_title text-center">Завершение регистрации</h1>

<div class="well">
    <div class="row">
        <div class="col-md-5 col-md-offset-4">
            <p class="lead text-success"><b>Учетная запись на сайте site.ru создана!</b></p>
            <p class="lead">Данные для входа (логин и пароль) и ссылка для подтверждения email отправлены на ivan.ivanov771110007@gmail.com. После перехода по ссылке Вы сможете авторизоваться на сайте и воспользоваться дополнительными сервисами.</p>
            <p class="lead"><b>ВНИМАНИЕ!</b> Ссылка действительна в течение 10-ти дней. Если не осуществить переход в этот срок, потребуется повторная регистрация.</p>
        </div>
        <div class="col-md-6 col-md-offset-3 text-center">
                            <a href="/register/create#student" class="btn btn-danger btn-lg"><br>Регистрация еще одного студента<br>&nbsp;</a>
                    </div>
    </div>
</div>
 </div>

//p[contains(@class,‘text-success’)]/b

Добрался через By.cssSelector(".lead.text-success") … коллеги программисты подсказали ))

https://www.google.com/search?ei=JqGPXNv2NYH5kwWp1pSIAQ&q=как+создать+xpath+для+текста&oq=как+создать+xpath+для+текста&gs_l=psy-ab.3...4436.6155..7035...0.0..0.114.541.0j5…0…1…gws-wiz.lLpP2gyi3rk

первые 5 ссылок с примерами

Проблемма возникла другая теперь!
Есть список

<select id="discipline" multiple="" name="discipline[]" type="text" class="form-control  select2-hidden-accessible" data-old="" style="width: 100%" tabindex="-1" aria-hidden="true">
<option value="34516">3-D конструирование</option>
<option value="28722">CASE технологии</option>
</select>

Надо заполнить поле …

Select discipline = new Select(driver.findElements(By.id("discipline")).get(0));
discipline.selectByValue("28722");

Пишет

Cannot locate option with value: 34516

И вообще какой то странный список!
Сейчас вообще отображается так

<span class="select2-selection select2-selection--multiple" role="combobox" aria-haspopup="true" aria-expanded="true" tabindex="-1" aria-owns="select2-discipline-results">
<ul class="select2-selection__rendered">
<li class="select2-selection__choice" title="3-D конструирование">
<span class="select2-selection__choice__remove" role="presentation">×</span>3-D конструирование</li>
<li class="select2-search select2-search--inline">
<input class="select2-search__field" type="search" tabindex="0" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" placeholder="" style="width: 0.75em;"></li>
</ul></span>

нужно прочесть инфу по ссылкам - отпадет 99% вопросов

ok …

не пойму как выбрать дисциплину https://goo.gl/h2Hkzj

1 клик в инпут
2 вводишь название
3 клик на тот элемент который подсвечен (у него атрибут содержит results__option–highlighted)

Название подгружается, его не возможно ввести…

С такой постановкой вопросов очень сомневаюсь что вам

… коллеги программисты
будт помагать в принципе

А по поводу локатора - так он элементарный в вашем случае.

е[quote=“Gallagher, post:11, topic:22354, full:true”]
Название подгружается, его не возможно ввести…
[/quote]

ждать нужно пока загрузится
если это ангуляр(у меня были похожие селекты пару лет назад) - то будет работать
дебажить быстро можно в каталон рекордере по началу

Не, это ларавел … пишет
idea
Index 0 out of bounds for length 0

к сожалению навыками фикса ошибки по кусочку стектрейса пока не овладел

используйте рекордер любой
по началу это будет быстрее и проще для дебага локаторов
экспорт семплов кода обычно тоже везде есть

ПС пока нет ни одного пруфа что вы попали в нужный элемент

Как достучаться до этого поля к примеру через xpath?

<li class="select2-results__option" role="treeitem" aria-selected="false">Web-дизайн</li>

WebElement dis = driver.findElement(By.cssSelector("ul.select2-selection__rendered"));
dis.click();
WebDriverWait wait = new WebDriverWait(driver, 100);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("[.//li[text() = 'Web-дизайн']]"))).click();

Так тоже пробовал

driver.findElement(By.xpath("//ul[@class = 'select2-results__option select2-results__option--highlighted'][5]")).click();

пишет
no such element: Unable to locate element: {"method":"xpath","selector":"//ul[@class = 'select2-results__option select2-results__option--highlighted'][5]"}

Так пробовал

WebElement dis = driver.findElement(By.cssSelector("ul.select2-selection__rendered"));
dis.click();
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='select2-discipline-results']/li/[2]"))).click();
// driver.findElement(By.xpath("//*[@id='select2-discipline-results']/li/[2]")).click();

И так пробовал

WebElement dis = driver.findElement(By.cssSelector("ul.select2-selection__rendered"));
dis.click();
// WebDriverWait wait = new WebDriverWait(driver, 10);
// wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='select2-discipline-results']/li/[2]"))).click();

driver.findElement(By.xpath("//*[@id='select2-discipline-results']/li/[2]")).click();

Хватит спамить, скинь нормальный кусок ДОМа и напиши проблему

Проблема та же что и была! Чуть продвинулся.

Как выбрать элемент из списка?

Сайт
не пойму как выбрать дисциплину https://goo.gl/h2Hkzj
вот мой код

WebElement dis = driver.findElement(By.cssSelector("ul.select2-selection__rendered"));
dis.click();
// WebDriverWait wait = new WebDriverWait(driver, 10);
// wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='select2-discipline-results']/li/[2]"))).click();

driver.findElement(By.xpath("//*[@id='select2-discipline-results']/li/[2]")).click();