使用findelements时,xpath定位器出现“用于定位器的无效选择器”错误

时间:2019-03-27 05:40:26

标签: java list selenium

Job.JobTitles.Add.JobTitleValidMessage的xpath  是:

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

它在第一行代码中给出 NullPointerException 。如何解决呢?

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 个答案:

答案 0 :(得分:2)

正确的代码应该是。

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']

答案 1 :(得分:0)

假设TestBase是控制某些浏览器的驱动程序,我会使用

List<WebElement> job_valid_message = TestBase.findElements(By.cssSelector('span.validation-error');

答案 2 :(得分:0)

TestBase类似乎是您从中调用findElements方法的框架类。由于参数中没有按定义,我可以建议您检查参数是字符串还是By。如果使用字符串重载,则默认定位器定义是什么(如cssSelector,xpath等)。