Ошибка «Недопустимый селектор, используемый для локатора» для локатора xpath при использовании findelements - PullRequest
0 голосов
/ 27 марта 2019

xpath Job.JobTitles.Add.JobTitleValidMessage:

//input[@id='jobTitle_jobTitle']/following-sibling::span

Это дает NullPointerException в 1-й строке кода.Как это решить?

List<WebElement> job_valid_message = TestBase.findElements("Job.JobTitles.Add.JobTitleValidMessage");
        if (job_valid_message.size()==1) {
            return !job_valid_message.get(0).isDisplayed();
        } else
            return true;

HTML-источник элемента

<li> <label for="jobTitle_jobTitle">Job Title <em>*</em></label> <input type="text" name="jobTitle[jobTitle]" maxlength="100" id="jobTitle_jobTitle" class="validation-error"><span for="jobTitle_jobTitle" generated="true" class="validation-error">Required</span> </li> 

Ответы [ 3 ]

2 голосов
/ 27 марта 2019

Правильный код должен быть.

List<WebElement> job_valid_message = TestBase.findElements(By.xpath("//input[@id='jobTitle_jobTitle']/following-sibling::span");
if (job_valid_message.size()>0) {
        return true; //message is displayed
    } else
        return false; //message not displayed

В качестве альтернативы вы можете использовать css span[for='jobTitle_jobTitle' ][class='validation-error'], если хотите получить прямой доступ к диапазону.

0 голосов
/ 27 марта 2019

класс TestBase, по-видимому, является классом вашей платформы, откуда вы вызываете метод findElements. Так как в параметре нет По определению, я могу предложить вам проверить, является ли параметр строкой или By. Если он перегружен строкой, каково определение локатора по умолчанию (например, cssSelector, xpath и т. Д.).

0 голосов
/ 27 марта 2019

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

List<WebElement> job_valid_message = TestBase.findElements(By.cssSelector('span.validation-error');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...