Cypress не может распознать функции Xpath

#xpath #automation #cypress

#cypress #cypress-xpath

Вопрос:

Запускаю Cypress и наткнулся на использование xpath в Cypress, и я пытаюсь использовать следующий код в файле .js.

 /// <reference types = "cypress" />
describe ("Test Contact us form",()=>{
    it("Should be able to submit the form", ()=>{
        cy.visit('some url');
        cy.xpath('//a[contains (@href, "contact")]').click();
     });
})
  

Вот как выглядит мой путь к каталогу xpath node_modules

 Projectsnode_modulesxpath
  

Вот мой index.js

 // Alternatively you can use CommonJS syntax:
// require('./commands')
require('xpath')
  

Вот мой package.json

 {
  "name": "projects",
  "version": "1.0.0",
  "description": "test",
  "main": "index.js",
  "scripts": {
    "test": "Thisistest"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "cypress": "^5.2.0",
    "xpath": "0.0.29"
  }
}
  

Вот фрагмент пакета-lock.json

 "xpath": {
      "version": "0.0.29",
      "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.29.tgz",
      "integrity": "some key",
      "dev": true
    },
  

После запуска теста я получаю следующую ошибку компиляции.
Это ошибка типа.

cy.xpath не является функцией

введите описание изображения здесь

Кажется, это небольшая конфигурация. Однако выполните точные действия, указанные в https://github.com/cypress-io/cypress-xpath#readme

Ответ №1:

Я удалил и заново настроил cypress и xpath снова, используя npm через git bash, и это сработало.

Ранее у меня была настройка с использованием node.js командная строка. После установки xpath с использованием той же команды npm xpath был успешно загружен, однако имя каталога внутри node_modules было просто xpath вместо cypress-xpath . Теперь, хотя у меня был require (‘xpath’) в файле index.json, он по-прежнему не мог обнаружить xpath.

Ответ №2:

[Обновлено для Cypress версии 10.9.0 в 2022 году]

Используйте ссылку ниже для установки: cypress-xpath плагин

  https://www.npmjs.com/package/cypress-xpath
  

Шаг 1: Установите плагин XPath, используя приведенную ниже команду

 npm install cypress-xpath
  

Шаг 2 Добавьте эту строку в e2e.js в папке поддержки

 require('cypress-xpath');
  

Шаг 3 Добавьте свой xpath в метод cy.xpath, как показано ниже:

  cy.xpath("//input[@name='userName']").should("be.visible");
  

Пожалуйста, убедитесь, что вы получаете код intellisense, подобный этому (см. Прилагаемое Изображение), после успешной установки плагина cypress-xpath.

введите описание изображения здесь

Ответ №3:

Я столкнулся с той же проблемой. затем я изменил ссылочные типы с cypress на cypress-xpath следующим образом

 ///reference types = 'cypress-xpath'
  

и проблема решена.
Это может быть полезно для вас.

Ответ №4:

Я загрузил cypress-xpath и обновил файл конфигурации с помощью requirements(‘cypress-xpath), а затем попробовал, и это сработало