неверный селектор: результат выражения xpath. Это должен быть элемент - PullRequest
1 голос
/ 28 марта 2019

Я пишу тест автоматизации в селен с шагами JavaScript. В тесте я хочу проверить, равен ли TEXT3 TEXT3

HTML-код сайта:

<div _ngcontent-c35="" class="content">
       <p>
          TEXT1
           <u>
             <strong>TEXT2</strong>
           </u> 
           TEXT3
         </p>
</div>

Javascript код:

this.Then(/^also "([^"]*)" as loanPurposeInfoDialogLabel03 is displayed$/, function (fieldValue, next) {
    var fieldText = this.driver.findElement(By.xpath("//div[@class='content']/p/text()[2]"));
     fieldText.getText().then(getFieldValue => {
      assert.equal(getFieldValue, fieldValue, next, 'Expected value of loanPurposeInfoDialogLabel03 (Text) to be: ' + fieldValue);
    }, next);
  });

Javascript код не работает, если я использую / text () в XPATH

//div[@class='content']/p/text()[2]

Я получаю ошибку:

InvalidSelectorError: invalid selector: The result of the xpath expression "//div[@class='content']/p/text()[2]" is: [object Text]. It should be an element.

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

Если я использую xpath

"//div[@class='content']/p"

, значение равно TEXT1 TEXT2 TEXT3, поэтому нет необходимости создавать шаг для TEXT3

Благодаря Selçuk Ayhan:)

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

Поскольку вы предоставляете text() функцию внутри xpath, попробуйте следующий код:

var fieldText = this.driver.findElement(By.xpath("//div[@class='content']/p/text[2]"));
...