Тестирование с Selenium в C # - сайте, на котором мне нужно проверить изменения XPath - PullRequest
0 голосов
/ 23 сентября 2019

Мне нужно создать инструмент автоматизации тестирования в селене с c #, чтобы протестировать сайт моей компании.Все работает нормально, кроме одного: каждый раз, когда я перезагружаю задачу на сайте (например, «создать нового пользователя»), XPath некоторых полей меняется.Например, первое поле имени не "//*[@id=\"0FirstName\"]" anymore, the new xpath would be "//*[@id=\"2FirstName\"]", а селен больше не распознает это поле, как раньше -> программа перестает работать

Есть ли способ создать динамическую функцию, чтобы игнорировать число перед электронным письмом?

driver.FindElement(By.XPath("//*[@id=\"0FirstName\"]")).SendKeys("Selenium");

Ответы [ 3 ]

1 голос
/ 23 сентября 2019
  1. Вы можете использовать XPath contains () , например:

    //*[contains(@id,'FirstName')]
    
  2. Если по какой-то причине это не работает,т. е. возвращает несколько совпадений, вы также можете реализовать некоторую форму функции end-with (), используя комбинацию substring () и string-length () функций, таких как:

    //*[substring(@id, string-length(@id) - string-length('FirstName')+ 1, string-length(@id))= 'FirstName']
    

Дополнительная информация: Операторы и функции XPath

0 голосов
/ 23 сентября 2019

вы можете использовать содержит ()

driver.FindElement(By.XPath("//*[contains(@id,'FirstName')]")).SendKeys("Selenium");
0 голосов
/ 23 сентября 2019

Вы можете изменить свой xpath следующим образом:

driver.FindElement(By.Xpath("//*[contains(@id,'FirstName')]"));
...