Перейти к содержимому

Фотография

Selenium Edge AngularJS: не может найти элементы

AngularJS Edge

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 MarkAvreliy

MarkAvreliy

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Аврелий Марк

Отправлено 11 мая 2017 - 10:33

Приветствую.

 

Окружение: Селениум + ie Edge. Веб приложение (просто сайт) написан на Ангуларе.

 

пример из ДОМа:

<input name="username" class="text-input ng-pristine ng-invalid ng-touched" autofocus="" required="" type="text" placeholder="Username" _ngcontent-c1="">

применяю простой метод:

@Test()
  public void checkLogoLink() {      
     // WebDriverWait wait = new WebDriverWait(driver, 5);
      //wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("username")));
      driver.findElement(By.name("username"));
  }

выдает (если юзаю вэйт):

org.openqa.selenium.TimeoutException: Expected condition failed: waiting for visibility of element located by By.name: username (tried for 5 second(s) with 500 MILLISECONDS interval)

или (если просто файнд)

org.openqa.selenium.NoSuchElementException: No such element (WARNING: The server did not provide any stacktrace information)

пробовал тоже самое на страницах VK или Яндекс - всё ок.

 

МБ проблема искобчительно в ангуляре?

 


  • 0

#2 Alex

Alex

    Постоянный участник

  • Members
  • PipPipPip
  • 237 сообщений
  • ФИО:Алексей

Отправлено 12 мая 2017 - 08:07

Приветствую.

 

Окружение: Селениум + ie Edge. Веб приложение (просто сайт) написан на Ангуларе.

 

пример из ДОМа:

<input name="username" class="text-input ng-pristine ng-invalid ng-touched" autofocus="" required="" type="text" placeholder="Username" _ngcontent-c1="">

применяю простой метод:

@Test()
  public void checkLogoLink() {      
     // WebDriverWait wait = new WebDriverWait(driver, 5);
      //wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("username")));
      driver.findElement(By.name("username"));
  }

выдает (если юзаю вэйт):

org.openqa.selenium.TimeoutException: Expected condition failed: waiting for visibility of element located by By.name: username (tried for 5 second(s) with 500 MILLISECONDS interval)

или (если просто файнд)

org.openqa.selenium.NoSuchElementException: No such element (WARNING: The server did not provide any stacktrace information)

пробовал тоже самое на страницах VK или Яндекс - всё ок.

 

МБ проблема искобчительно в ангуляре?

Что-то маловероятно, чтобы работа с DOM как-то сильно отличалась в зависимости от Angular или нет. Скорее всего заданный элемент во фрэйме или отображается/появляется в DOM по событию, а до того там нечто внешне похожее на edit. А почему акцент на edge? В хром/ff работает?


  • 0

#3 MarkAvreliy

MarkAvreliy

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Аврелий Марк

Отправлено 12 мая 2017 - 11:52

 

Приветствую.


 

МБ проблема искобчительно в ангуляре?

Что-то маловероятно, чтобы работа с DOM как-то сильно отличалась в зависимости от Angular или нет. Скорее всего заданный элемент во фрэйме или отображается/появляется в DOM по событию, а до того там нечто внешне похожее на edit. А почему акцент на edge? В хром/ff работает?

 

привет, Алекс.

Спасибо за ответ.

 

забавное в том, что и в хроме не работает.

@Test()
  public void checkLogoLink() {      
     //WebDriverWait wait = new WebDriverWait(driver, 5);
      //wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/app-root/ng-component/div[2]/form/div/input[1]")));
      driver.findElement(By.cssSelector("body > app-root > ng-component > div.content > form > div > input:nth-child(2)"));
  }

Результат:

launching Chrome browser
Starting ChromeDriver 2.29.461591 (62ebf098771772160f391d75e589dc567915b233) on port 25104
Only local connections are allowed.
мая 11, 2017 4:18:17 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
PASSED: testOpenStartPage
FAILED: checkLogoLink
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"body > app-root > ng-component > div.content > form > div > input:nth-child(2)"}
  (Session info: chrome=58.0.3029.110)
  (Driver info: chromedriver=2.29.461591 (62ebf098771772160f391d75e589dc567915b233),platform=Windows NT 10.0.14393 x86_64) (WARNING: The server did not provide any stacktrace information)

 

или

  @Test()
  public void checkLogoLink() {      
     //WebDriverWait wait = new WebDriverWait(driver, 5);
      //wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/app-root/ng-component/div[2]/form/div/input[1]")));
      driver.findElement(By.name("username"));
  }

результат:

launching Chrome browser
Starting ChromeDriver 2.29.461591 (62ebf098771772160f391d75e589dc567915b233) on port 7507
Only local connections are allowed.
мая 12, 2017 2:44:53 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
PASSED: testOpenStartPage
FAILED: checkLogoLink
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"name","selector":"username"}
  (Session info: chrome=58.0.3029.110)
  (Driver info: chromedriver=2.29.461591 (62ebf098771772160f391d75e589dc567915b233),platform=Windows NT 10.0.14393 x86_64) (WARNING: The server did not provide any stacktrace information)

 

на взякий случай кусок дома:

<div _ngcontent-c1="" class="inner">
      <input _ngcontent-c1="" autofocus="" class="text-input ng-untouched ng-pristine ng-invalid" name="username" placeholder="Username" required="" type="text">
      <input _ngcontent-c1="" class="text-input ng-untouched ng-pristine ng-invalid" name="password" placeholder="Password" required="" type="password">
    </div>


  • 0

#4 Alex

Alex

    Постоянный участник

  • Members
  • PipPipPip
  • 237 сообщений
  • ФИО:Алексей

Отправлено 15 мая 2017 - 08:08

 

 

Приветствую.


 

МБ проблема искобчительно в ангуляре?

Что-то маловероятно, чтобы работа с DOM как-то сильно отличалась в зависимости от Angular или нет. Скорее всего заданный элемент во фрэйме или отображается/появляется в DOM по событию, а до того там нечто внешне похожее на edit. А почему акцент на edge? В хром/ff работает?

 

привет, Алекс.

Спасибо за ответ.

 

забавное в том, что и в хроме не работает.

@Test()
  public void checkLogoLink() {      
     //WebDriverWait wait = new WebDriverWait(driver, 5);
      //wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/app-root/ng-component/div[2]/form/div/input[1]")));
      driver.findElement(By.cssSelector("body > app-root > ng-component > div.content > form > div > input:nth-child(2)"));
  }

Результат:

launching Chrome browser
Starting ChromeDriver 2.29.461591 (62ebf098771772160f391d75e589dc567915b233) on port 25104
Only local connections are allowed.
мая 11, 2017 4:18:17 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
PASSED: testOpenStartPage
FAILED: checkLogoLink
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"body > app-root > ng-component > div.content > form > div > input:nth-child(2)"}
  (Session info: chrome=58.0.3029.110)
  (Driver info: chromedriver=2.29.461591 (62ebf098771772160f391d75e589dc567915b233),platform=Windows NT 10.0.14393 x86_64) (WARNING: The server did not provide any stacktrace information)

 

или

  @Test()
  public void checkLogoLink() {      
     //WebDriverWait wait = new WebDriverWait(driver, 5);
      //wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/app-root/ng-component/div[2]/form/div/input[1]")));
      driver.findElement(By.name("username"));
  }

результат:

launching Chrome browser
Starting ChromeDriver 2.29.461591 (62ebf098771772160f391d75e589dc567915b233) on port 7507
Only local connections are allowed.
мая 12, 2017 2:44:53 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
PASSED: testOpenStartPage
FAILED: checkLogoLink
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"name","selector":"username"}
  (Session info: chrome=58.0.3029.110)
  (Driver info: chromedriver=2.29.461591 (62ebf098771772160f391d75e589dc567915b233),platform=Windows NT 10.0.14393 x86_64) (WARNING: The server did not provide any stacktrace information)

 

на взякий случай кусок дома:

<div _ngcontent-c1="" class="inner">
      <input _ngcontent-c1="" autofocus="" class="text-input ng-untouched ng-pristine ng-invalid" name="username" placeholder="Username" required="" type="text">
      <input _ngcontent-c1="" class="text-input ng-untouched ng-pristine ng-invalid" name="password" placeholder="Password" required="" type="password">
    </div>

 

А что будет, если в хроме открыть требуемую страницу, далее (F12), там выбираем console и ввести $$("input[name='username']")? Найдется хоть один элемент?

С учетом описания, там скорее всего фрэймы, либо в тестах driver смотрит не туда.


  • 0

#5 Alex

Alex

    Постоянный участник

  • Members
  • PipPipPip
  • 237 сообщений
  • ФИО:Алексей

Отправлено 15 мая 2017 - 08:09

 

 

 

Приветствую.


 

МБ проблема искобчительно в ангуляре?

Что-то маловероятно, чтобы работа с DOM как-то сильно отличалась в зависимости от Angular или нет. Скорее всего заданный элемент во фрэйме или отображается/появляется в DOM по событию, а до того там нечто внешне похожее на edit. А почему акцент на edge? В хром/ff работает?

 

привет, Алекс.

Спасибо за ответ.

 

забавное в том, что и в хроме не работает.

@Test()
  public void checkLogoLink() {      
     //WebDriverWait wait = new WebDriverWait(driver, 5);
      //wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/app-root/ng-component/div[2]/form/div/input[1]")));
      driver.findElement(By.cssSelector("body > app-root > ng-component > div.content > form > div > input:nth-child(2)"));
  }

Результат:

launching Chrome browser
Starting ChromeDriver 2.29.461591 (62ebf098771772160f391d75e589dc567915b233) on port 25104
Only local connections are allowed.
мая 11, 2017 4:18:17 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
PASSED: testOpenStartPage
FAILED: checkLogoLink
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"body > app-root > ng-component > div.content > form > div > input:nth-child(2)"}
  (Session info: chrome=58.0.3029.110)
  (Driver info: chromedriver=2.29.461591 (62ebf098771772160f391d75e589dc567915b233),platform=Windows NT 10.0.14393 x86_64) (WARNING: The server did not provide any stacktrace information)

 

или

  @Test()
  public void checkLogoLink() {      
     //WebDriverWait wait = new WebDriverWait(driver, 5);
      //wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/app-root/ng-component/div[2]/form/div/input[1]")));
      driver.findElement(By.name("username"));
  }

результат:

launching Chrome browser
Starting ChromeDriver 2.29.461591 (62ebf098771772160f391d75e589dc567915b233) on port 7507
Only local connections are allowed.
мая 12, 2017 2:44:53 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
PASSED: testOpenStartPage
FAILED: checkLogoLink
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"name","selector":"username"}
  (Session info: chrome=58.0.3029.110)
  (Driver info: chromedriver=2.29.461591 (62ebf098771772160f391d75e589dc567915b233),platform=Windows NT 10.0.14393 x86_64) (WARNING: The server did not provide any stacktrace information)

 

на взякий случай кусок дома:

<div _ngcontent-c1="" class="inner">
      <input _ngcontent-c1="" autofocus="" class="text-input ng-untouched ng-pristine ng-invalid" name="username" placeholder="Username" required="" type="text">
      <input _ngcontent-c1="" class="text-input ng-untouched ng-pristine ng-invalid" name="password" placeholder="Password" required="" type="password">
    </div>

 

А что будет, если в хроме открыть требуемую страницу, далее (F12), там выбираем console и ввести $$("input[name='username']")? Найдется хоть один элемент?

С учетом описания, там скорее всего фрэймы, либо в тестах driver смотрит не туда.

 

Только сейчас обратил внимание. А что за "ng-component" в строке: body > app-root > ng-component > div.content > form > div > input:nth-child(2)


  • 0

#6 sergueik

sergueik

    Постоянный участник

  • Members
  • PipPipPip
  • 166 сообщений
  • ФИО:кузьмин сергей

Отправлено 15 мая 2017 - 14:59

не пробовали 

Protractor 
 
?
 
у Protractor свои методы для поиска элементов
 

  • 0



Темы с аналогичным тегами AngularJS, Edge

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных