t.me/atinfo_chat Telegram группа по автоматизации тестирования

Помогите выбрать локатор.


(FreeMan) #1

Помогите выбрать локатор.

Недавно занимаюсь автоматизацией, вот на добровольной основе начал автоматизировать наш продукт, который пока мы тестируем ручками.

Пишу логин тест в Selenium IDE, и собственно в селениум IDE все ок.

Кидаю в эклипс в формате Junit4/Webdriver.


        driver.findElement(By.id("ctl00_cphM_lgnBoss_UserName")).clear();
        driver.findElement(By.id("ctl00_cphM_lgnBoss_UserName")).sendKeys("369532"); //Вводит имя
        driver.findElement(By.id("ctl00_cphM_lgnBoss_Password")).clear();
        driver.findElement(By.id("ctl00_cphM_lgnBoss_Password")).sendKeys("12345");   //Вводит пароль
        driver.findElement(By.id("ctl00_cphM_lgnBoss_btLgn")).click();                          //А вот нажать на кнопочку 'Login' не хочет


HTML этого элемента выглядит так  -

<input type="submit" style="background-color:White;width:82px;" id="ctl00_cphM_lgnBoss_btLgn" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$cphM$lgnBoss$btLgn&quot;, &quot;&quot;, true, &quot;lgnBoss&quot;, &quot;&quot;, false, false))" value="Login" name="ctl00$cphM$lgnBoss$btLgn">

Так как  мало что понимаю, подскажите пожалуйста на этом примере какие у элемента могут быть локаторы вообще.

 


(re1ax) #2

Попробуй:

driver.findElement(By.name("ctl00$cphM$lgnBoss$btLgn"))

driver.findElement(By.xpath("//*[@type='submit' and @value='Login']"))


(FreeMan) #3


Спасибо, в FireFox заработало, но в Internet Explorer 8 так и останавливается, кликать не хочет. Как можно заставить в IE мой тест работать?


(FreeMan) #4

Получилось по изврашенному заставить работать в IE -

driver.findElement(By.xpath("//*[@name='ctl00$cphM$lgnBoss$btLgn']")).sendKeys(" ");

Но на мой взгляд это как то криво, да и не понятно по чему он не хочет кликать. Как заставить работать через click?


(Mykhailo Poliarush) #5

чтобы не играться с локаторами можете просто послать форму 

driver.findElement(By.id("ctl00_cphM_lgnBoss_Password")).submit()


(FreeMan) #6

Данная строчка не работает, понаблюдал и заметил что после ее выполнения стирается пароль.

Пока работает только в этом виде:

        driver.findElement(By.id("ctl00_cphM_lgnBoss_UserName")).clear();
        driver.findElement(By.id("ctl00_cphM_lgnBoss_UserName")).sendKeys("369532");
        driver.findElement(By.id("ctl00_cphM_lgnBoss_Password")).clear();
        driver.findElement(By.id("ctl00_cphM_lgnBoss_Password")).sendKeys("12345");
        driver.findElement(By.id("ctl00_cphM_lgnBoss_btLgn")).sendKeys(" ");
 

Мне кажется, что это не совсем хорошо, как еще можно попробовать залогиниться?


(FreeMan) #7

Сразу выложу весь код, тк есть еще проблеммы

    @Test
    public void testUntitled() throws Exception {
        driver.get(baseUrl + "/BOSS/Login.aspx?browser=any ");
        driver.get(baseUrl + "/BOSS/Login.aspx?browser=any ");
        new Select(driver.findElement(By.id("ctl00_cphM_lgnBoss_ddlDts"))).selectByVisibleText("Tas_ap");
        driver.findElement(By.id("ctl00_cphM_lgnBoss_UserName")).clear();
        driver.findElement(By.id("ctl00_cphM_lgnBoss_UserName")).sendKeys("369532");
        driver.findElement(By.id("ctl00_cphM_lgnBoss_Password")).clear();
        driver.findElement(By.id("ctl00_cphM_lgnBoss_Password")).sendKeys("12345");
        driver.findElement(By.id("ctl00_cphM_lgnBoss_btLgn")).sendKeys(" ");
        driver.findElement(By.xpath("//*[@id='ctl00_mnuMainn1']/table/tbody/tr/td/a")).click();          //  этот элемент представляет из себя ссылку на http://server3/BOSS/Pages/ContactInfo.aspx, но кликать не хочет, но когда наблюдаю за браузером он центрирует нанрей экран.
        driver.findElement(By.linkText("Timesheet")).click();                                                                   //  этот элемент представляет из себя ссылку на http://server3/BOSS/Pages/Timesheet.aspx, но кликать не хочет, но когда наблюдаю за браузером он центрирует нанрей экран.
        driver.findElement(By.linkText("Read Me")).click();                                                                      // тоже самое, центрирует, кликать не хочет.
        driver.findElement(By.linkText("Print")).click();                                                                              // тоже самое, центрирует, кликать не хочет.
        driver.findElement(By.xpath("//*[@id='ctl00_cphM_hlSysFun']")).click();                                  // тоже самое, центрирует, кликать не хочет.
        driver.findElement(By.id("ctl00_cphM_btnHomePage")).click();

 

В FireFox все работает, а вот В IE нет.

Собственно что делать? какие есть альтернативы click?

 


(Mykhailo Poliarush) #8

что плохого вы видите в этом коде?


(Mykhailo Poliarush) #9

мне кажется на вашей страницы есть какие-то обработчики событий или может быть есть какой-то javascript

но это все надо проверять в коде, иначе разобраться никак нельзя 

а код у вас самый стантартный 

 

на каком моменте падает тест в ФФ?


(Shaman) #10

попробуйте простой локатор xpath    //input[@value='Login']


(FreeMan) #11

Пробовал, к сожалению не работает(


(FreeMan) #12

Михаил,расскажите поподробнее о таком феномене - в Fire Fox все работает, а в IE нет? может какие есть статьи или видео об этом? Просто вот в IE не хочет click'ать. Какие есть альтернативы команде click?
 

Такой код в FireFox работает -

@Test
    public void testUntitled() throws Exception {
        driver.get(baseUrl + "/BOSS/Login.aspx?browser=any ");
        driver.get(baseUrl + "/BOSS/Login.aspx?browser=any ");
        new Select(driver.findElement(By.id("ctl00_cphM_lgnBoss_ddlDts"))).selectByVisibleText("Tas_ap");
        driver.findElement(By.id("ctl00_cphM_lgnBoss_UserName")).clear();
        driver.findElement(By.id("ctl00_cphM_lgnBoss_UserName")).sendKeys("369532");
        driver.findElement(By.id("ctl00_cphM_lgnBoss_Password")).clear();
        driver.findElement(By.id("ctl00_cphM_lgnBoss_Password")).sendKeys("12345");
        driver.findElement(By.id("ctl00_cphM_lgnBoss_btLgn")).sendKeys(" ");                                //   driver.findElement(By.id("ctl00_cphM_lgnBoss_btLgn")).click();  - с этой строкой и в Fire Fox не работает (не хочет кликать на login)
        driver.findElement(By.xpath("//*[@id='ctl00_mnuMainn1']/table/tbody/tr/td/a")).click();       
        driver.findElement(By.linkText("Timesheet")).click();                                                                 // в IE падает тут в любом случае.   
        driver.findElement(By.linkText("Read Me")).click();                                                                    
        driver.findElement(By.linkText("Print")).click();                                                                           
        driver.findElement(By.xpath("//*[@id='ctl00_cphM_hlSysFun']")).click();                                 
        driver.findElement(By.id("ctl00_cphM_btnHomePage")).click();


(Mykhailo Poliarush) #13

феномен есть, только вот рассказать о нем тяжело, так как надо собрать базу разных ресурсов на которых это воспроизводиться

проблемы возникают совсем разные, я бы не сказал, что у всех одна и та же причина

поэтому разбирательства идут в каждом отдельном порядке.

и даже если вы сами в интернете поищите, то вряд ли что-то сможете найти статью, которая решает все проблемы

 

надо разбираться, почему у вас в ИЕ не работает: ненаходит локатор, а может не туда кликает или не срабатывает какой-то javascript ?!

а по чату и обрывках кода это сделать очень тяжело


(Vol) #14

Попробуйте сделать сравнение структуры страниц на IE и FF, посмотрите что у вас изменилось в контролах что вас интересуют.

Если не поможет - розшарьте HTML структуру страницы, по вашим локаторам тяжело сказать что в них не так.