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

Публикации WhiteCrow

19 публикаций создано WhiteCrow (учитываются публикации только с 20 апреля 2023)


#132206 Сохранение sreenshot при ошибке теста

Отправлено автор: WhiteCrow 15 июля 2014 - 08:41 в Selenium - Functional Testing

Потому что у Вас блок catch ловит иксепшены только вида ArithmeticException.

Если в реалтайме вылетит иксепшн другого класса, Вы его просто не поймаете, но выполните финализацию без скриншота.
Измените на более общий:

catch (Exception e) {
     takeScreenshot(driver, name);
}

Кстати, мой вам совет:

1) не сохраняйте скриншоты в общей свалке - со временем всё тяжелее будет находить нужный.

2) под каждый запуск автотестов создавайте (автоматически) свой пул скриншотов в отдельном каталоге (дата + время запуска).

3) так как Вы не можете гарантировать уникальность имён скриншотов, заведите себе правило перед именем ставить какой-нибудь 100% уникальный идентификатор. Таймстамп является одним из наилучших решений, но он достаточно длинный. Так как пул скриншотов хранится в директории "дата + время запуска", то можно использовать таймстамп без даты. А в зависимости от скорости выполнения автотестов можно избавиться ещё и от часов.

 

P.S. всё это из личного опыта, основанного на граблях.

Спасибо за советы. Буду дорабатывать и учту это все.




#132198 Сохранение sreenshot при ошибке теста

Отправлено автор: WhiteCrow 15 июля 2014 - 07:20 в Selenium - Functional Testing

Привет всем. Я недавно начал изучать селениум WebDriver, и так понимаю уже подошел к тому, что есть желание получать sreenshot при ошибке. Аннотацией не пользуюсь потому что не сильно понимаю как лучше ее использовать. Но если кто может дать понятный материал по этой теме буду благодарен.  

Для этого я использую операторы try catch finally. Но к сожалению нечего не выходит. Sreenshot  просто не сохраняется. Объясните почему, как это исправить пожалуйста. Полный код  на Java прилагаю.

try {
driver.get(url);
firstEnter(login, old_pass, driver);
changePass(old_pass, new_pass, driver);
logout(driver);
popupAuthorization(login, new_pass, driver);
changePass(new_pass, old_pass, driver);
logout(driver);
}
catch(ArithmeticException e) {
takeScreenshot(driver, name);
}
finally {
driver.quit();
}

Само сохранение sreenshot'а

public static void takeScreenshot(WebDriver driver, String name) throws IOException {
if (driver instanceof TakesScreenshot) {
   File tempFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
   FileUtils.copyFile(tempFile, new File(String.format("screenshots/%s.png", name)));
   }
}
 

 

Прикрепленные файлы




#132168 Не работает перетаскивание ползунока(drop and drag)

Отправлено автор: WhiteCrow 14 июля 2014 - 09:32 в Selenium - Functional Testing

delete

Страница с ошибками подгрузилась первый раз + увидел фильтры.

 

Смущает строка 

driver.switchTo().frame(0);

Фреймов я ни одного не увидел.

Возможно, фрейм(0) = базовый, но, может, всё-таки попробовать не переключаться, а?

Тем более, что класс с таким идентификатором существует, и причём единственный.

 

Да вы правы. Стоило всего лишь не переключаться между ними. Спасибо.




#132163 Не работает перетаскивание ползунока(drop and drag)

Отправлено автор: WhiteCrow 14 июля 2014 - 08:46 в Selenium - Functional Testing

Привет всем. У меня не работает перетаскивание ползунка. Судя по ошибке - не находиться селектор. Хотя я его указал верно. Побывал разные варианты селекторов  xpath и CSS. Попробовал запускать в разных браузерах. 

 

Мои селекторы:

 

xpath:

 

.//*[@id='block_1']/div[2]/div/div[2]/div[7]

 

.//*[@class='t76_js_min_cursor']" - улучшенный вариант

 

CSS:

 

.t76_js_min_cursor

 

Вот код:

package Komus.example;


import java.util.concurrent.TimeUnit;


import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Action;
import org.openqa.selenium.interactions.Actions;


public class UseSlider {


private static final String url = "http://www.komus.ru/catalog/7237/_s/feat/p%5D%5B1.t%5D%5B1.f1_~2594~:%5D012942%5B1.~2595~:%5D021942%5B_1.r%5D%5B/";


public static void main(String[] args) {


WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
try {
driver.get(url);
moveSlider(driver);


}


finally {
//driver.quit();
}
} 


private static void moveSlider (WebDriver driver) {


driver.switchTo().frame(0);
   WebElement slider = driver.findElement(By.xpath(".//*[@class='t76_js_min_cursor']"));
   Actions move = new Actions(driver);
   Action action = (Action) move.dragAndDropBy(slider, 60, 0).build();
   action.perform();
}


}

Вот ошибка:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":".//*[@class='t76_js_min_cursor']"}
Command duration or timeout: 10.12 seconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03'
System info: host: 'acer-aspire_v5', ip: '192.168.0.24', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_05'
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=30.0, platform=XP, browserConnectionEnabled=true, nativeEvents=false, acceptSslCerts=true, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: a2385d0c-3036-44ef-a0d2-c291deb8e29d
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:204)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:156)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:599)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:352)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:449)
at org.openqa.selenium.By$ByXPath.findElement(By.java:357)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:344)
at Komus.example.UseSlider.moveSlider(UseSlider.java:50)
at Komus.example.UseSlider.main(UseSlider.java:38)
Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: Unable to locate element: {"method":"xpath","selector":".//*[@class='t76_js_min_cursor']"}
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03'
System info: host: 'acer-aspire_v5', ip: '192.168.0.24', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_05'
Driver info: driver.version: unknown
at <anonymous class>.FirefoxDriver.prototype.findElementInternal_(file:///C:/Users/user/AppData/Local/Temp/anonymous2138885446236210449webdriver-profile/extensions/fxdriver@googlecode.com/components/driver_component.js:9470:7)
at <anonymous class>.fxdriver.Timer.prototype.setTimeout/<.notify(file:///C:/Users/user/AppData/Local/Temp/anonymous2138885446236210449webdriver-profile/extensions/fxdriver@googlecode.com/components/driver_component.js:407:5)
 



#132069 Ввод Login and Password в сплывающей форме

Отправлено автор: WhiteCrow 10 июля 2014 - 09:38 в Selenium - Functional Testing

 


- Про первые 3 неудачных прогона. Попробуйте почистить проект, а потом перекомпилить. Вероятно остался мусор и выполнялся старый код.
- про ошибку "Timed out after 15 seconds waiting for visibility of element" 
Попытайтесь найти причину непостоянности ошибки. Продебажьте ваш код. 
Советовать что-то сложно ввиду не постоянности ошибки. 

 

Хорошо. Выполню все что вы сказали. + переписал сам код для того что бы было понятней читать его.(помогли немного)

 

package Komus.example;


import java.util.List;


import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.TimeoutException;
import org.junit.Test;


public class Test3 {
private static final String url = "http://www.komus.ru/myoffice/login";
private static final String new_pass = "qwerty1234";
private static final String old_pass = "qwerty1234";
private static final String login = "marvin@yandex.ru";
private static final String message_text = "Пароль успешно изменен!";


@Test
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\\Atest\\Selenium\\Chrome\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();


try {
driver.get(url);
firstEnter(login, old_pass, driver);
changePass(old_pass, new_pass, driver);
logout(driver);
        popupAuthorization(login, new_pass, driver);
        changePass(new_pass, old_pass, driver);
        logout(driver);
}
finally {
driver.quit();
}


}


private static void firstEnter(String login, String pass ,WebDriver driver) {


// Enter in site


By email = By.cssSelector("div.t0_block_shadow_2 > #email");
By password = By.id("js-pass");
By submit = By.cssSelector(".t92_left_col input[alt='login']");
WebElement emailField = driver.findElement(email);
emailField.clear();
emailField.sendKeys(login);
WebElement passwordField = driver.findElement(password);
passwordField.clear();
passwordField.sendKeys(old_pass);
WebElement submitField = driver.findElement(submit);
submitField.click();
}


private static void changePass(String oldPass, String newPass, WebDriver driver) {


//Смена пароля


By link_pass = By.linkText("Смена пароля");
   By password_old = By.name("password_old");
   By password = By.name("password");
   By password_check = By.name("password_check");
   By change_password = By.name("change_password");
   By success_message = By.xpath(".//*[contains(@class,'message_ok')]");
   
   driver.findElement(link_pass).click();
   
driver.findElement(password_old).clear();
driver.findElement(password_old).sendKeys(old_pass);


driver.findElement(password).clear();
driver.findElement(password).sendKeys(new_pass);


driver.findElement(password_check).clear();
driver.findElement(password_check).sendKeys(new_pass);


driver.findElement(change_password).click();


//Проверка смены пароля


new WebDriverWait(driver, 15).until(ExpectedConditions.textToBePresentInElement(success_message, message_text));




}


private static void logout(WebDriver driver) {
driver.findElement(By.linkText("Выход")).click();


}


private static void popupAuthorization(String login2, String pass2, WebDriver driver) {


   //Ввод пароля в сплывающей форме


   By auth_form = By.name("auth");
   By start_auth_link = By.cssSelector("div.t24_vhod_link");
   By email_input = By.cssSelector("#email");
   By pass_input = By.cssSelector("#password");
   By submit = By.cssSelector("div.t24_form_links * input");
   
   Actions actions = new Actions(driver);
   actions.moveToElement(driver.findElement(start_auth_link)).perform();
   new WebDriverWait(driver, 15).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(email_input));
   WebElement login_input = driver.findElement(auth_form).findElement(email_input);
   login_input.clear();
   login_input.sendKeys(login);
   WebElement password_input = driver.findElement(auth_form).findElement(pass_input);
    password_input.clear();
    password_input.sendKeys(new_pass);


   driver.findElement(auth_form).findElement(submit).click();
}


}



#132056 Ввод Login and Password в сплывающей форме

Отправлено автор: WhiteCrow 10 июля 2014 - 05:47 в Selenium - Functional Testing

Попробуйте следующее:
1) Установить масштаб экрана:
в Win7: панель управления \ Экран \ 100%
2) Код:

actions.moveToElement(driver.findElement(By.cssSelector("div.t24_vhod_link"))).build().perform();

заменить на:

actions.moveToElement(driver.findElement(By.cssSelector("div.t24_vhod_link"))).perform();

3) Разворачивать браузер при запуске теста. Примерно так:

driver.manage().window().maximize();

Отпишитесь о результатах.

1)Установил масштаб экрана 100%(как и было)

2)Поменял заменил часть кода

3) Экран разворачивался до этого - аналогичным способом

 

 

Первые 3 прогона выдавалась все та же самая ошибка. Но потом 10 прогонов подряд все прошло нормально. Могу сказать что крашиться из за того что не открывается форма тест стал реже.

Starting ChromeDriver (v2.10.267521) on port 31449
Only local connections are allowed.
Exception in thread "main" org.openqa.selenium.TimeoutException: Timed out after 15 seconds waiting for visibility of element located by By.selector: #email
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03'
System info: host: 'acer-aspire_v5', ip: '192.168.0.16', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_05'
Driver info: driver.version: unknown
at org.openqa.selenium.support.ui.FluentWait.timeoutException(FluentWait.java:259)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:228)
at Komus.example.Test1.main(Test1.java:60)



#132032 Ввод Login and Password в сплывающей форме

Отправлено автор: WhiteCrow 09 июля 2014 - 11:56 в Selenium - Functional Testing

 

1. валится на шаге открытия всплывающегося окна

Будьте, пожалуйста, конкретнее, слово "валится" слишком двусмысленное. Какое сообщение об ошибке?

Я предполагаю, что на самом деле "валится" на следующем действии, при попытке ввести значение в поле ввода, которое находится в этом окне. Потому что нет ожидания видимости, так что Selenium пытается вводить данные в поле, когда оно ещё не появилось. И ошибка должна быть типа InvalidElementStateException.

Если это так -- добавьте ожидания. Если не так -- расскажите, как именно "валится" у Вас.

 

 

Ожидание у меня добавлено:

//Ввод пароля в сплывающей форме
            Actions actions = new Actions(driver);
            actions.moveToElement(driver.findElement(By.cssSelector("div.t24_vhod_link"))).build().perform();
           (new WebDriverWait(driver, 15)).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#email")));
            driver.findElement(By.cssSelector("#email")).clear();
            driver.findElement(By.cssSelector("#email")).sendKeys("marvin@yandex.ru");

Но иногда всплывает вот такая ошибка. 

 

Starting ChromeDriver (v2.10.267521) on port 19691
Only local connections are allowed.
Exception in thread "main" org.openqa.selenium.TimeoutException: Timed out after 15 seconds waiting for visibility of element located by By.selector: #email
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03'
System info: host: 'acer-aspire_v5', ip: '192.168.0.16', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_05'
Driver info: driver.version: unknown
at org.openqa.selenium.support.ui.FluentWait.timeoutException(FluentWait.java:259)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:228)
at Komus.example.Test1.main(Test1.java:60)



#131965 Ввод Login and Password в сплывающей форме

Отправлено автор: WhiteCrow 08 июля 2014 - 13:50 в Selenium - Functional Testing

 

 

Модераториал: не дублируйте темы

У меня уже другая проблема.

 

 

Упс, тогда извините :) Ну всё равно, пусть будет продолжением предыдущей темы.

 

 

Нечего страшного




#131956 Ввод Login and Password в сплывающей форме

Отправлено автор: WhiteCrow 08 июля 2014 - 11:55 в Selenium - Functional Testing

может всплывающее окно - iframe? Может окно появляется, но элементов в нём ещё нет? Селениум работает быстрее глаз

 

Не думаю. вот именно тот кусочек кода который не отрабатывается. может я что то не так пишу? 

//Ввод пароля в сплывающей форме
        Actions actions = new Actions(driver);
        actions.moveToElement(driver.findElement(By.cssSelector("div.t24_vhod_link"))).build().perform();
       
        driver.findElement(By.cssSelector("#email")).clear();
        driver.findElement(By.cssSelector("#email")).sendKeys("marvin@yandex.ru");
       
        driver.findElement(By.cssSelector("#password")).clear();
        driver.findElement(By.cssSelector("#password")).sendKeys("qwerty1234");
       
        driver.findElement(By.cssSelector("div.t24_form_links * input")).click();



#131954 Ввод Login and Password в сплывающей форме

Отправлено автор: WhiteCrow 08 июля 2014 - 10:35 в Selenium - Functional Testing

Привет!
 

Не могу совершить авторизацию на главной странице сайта в сплывающей форме

На каком шаге валится? 
Что наблюдаем в браузере? 
Пробовали ли на других браузерах? 
Пробовали ли искать элементы на по cssSelector, а по xpath например?

 

1. валится на шаге открытия всплывающегося окна

2. В браузере открывается всплывающеся  окно и все. дальше действие не идет

3.IE/Google Chrome/FF

4. Да писал разные селекторы для поля login и password




#131952 Ввод Login and Password в сплывающей форме

Отправлено автор: WhiteCrow 08 июля 2014 - 10:13 в Selenium - Functional Testing

Модераториал: не дублируйте темы

У меня уже другая проблема.




#131949 Ввод Login and Password в сплывающей форме

Отправлено автор: WhiteCrow 08 июля 2014 - 09:47 в Selenium - Functional Testing

 
Не могу совершить авторизацию на главной странице сайта в сплывающей форме. Из похожих тем решения для себя не нашел.
 

Тестовый Login Marvin@yandex.ru Password qwerty1234
Cайт komus.ru

package Komus.example;

import java.util.List;


import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.interactions.Actions;




public class Test1 {
    public static void main(String[] args) {
     
     //WebDriver driver = new FirefoxDriver();
     System.setProperty("webdriver.chrome.driver", "C:\\Atest\\Selenium\\Chrome\\chromedriver.exe");
     WebDriver driver = new ChromeDriver();



        driver.get("http://www.komus.ru/myoffice/login");
         //login
         WebElement emailField = driver.findElement(By.cssSelector("div.t0_block_shadow_2 > #email"));
         emailField.clear();
         emailField.sendKeys("marvin@yandex.ru");
         WebElement passwordField =  driver.findElement(By.id("js-pass"));
         
         passwordField.clear();
         passwordField.sendKeys("qwerty1234");
         WebElement loginField =  driver.findElement(By.cssSelector(".t92_left_col input[alt='login']"));
         loginField.click();
         
         //Сhange password
         driver.findElement(By.linkText("Смена пароля")).click();
         //First fiend
         driver.findElement(By.xpath("(//input[@name='password_old']) ")).clear();
         driver.findElement(By.xpath("(//input[@name='password_old'])")).sendKeys("qwerty1234");
         //Second fiend
         driver.findElement(By.xpath("(//input[@name='password'])")).clear();
         driver.findElement(By.xpath("(//input[@name='password'])")).sendKeys("qwerty1234");
         //Third fiend
         driver.findElement(By.xpath("(//input[@name='password_check'])")).clear();
         driver.findElement(By.xpath("(//input[@name='password_check'])")).sendKeys("qwerty1234");
      
         
         //Button enter
         driver.findElement(By.cssSelector(".t88_inside_block_3 input[name='change_password']")).click();  


         driver.findElement(By.linkText("Выход")).click();


         //Ввод пароля в сплывающей форме
         Actions actions = new Actions(driver);
         actions.moveToElement(driver.findElement(By.cssSelector("div.t24_vhod_link"))).build().perform();
         
         driver.findElement(By.cssSelector("#email")).clear();
         driver.findElement(By.cssSelector("#email")).sendKeys("marvin@yandex.ru");
         
         driver.findElement(By.cssSelector("#password")).clear();
         driver.findElement(By.cssSelector("#password")).sendKeys("qwerty1234");
         
         driver.findElement(By.cssSelector("div.t24_form_links * input")).click();
         
         
         //Сhange password
         driver.findElement(By.linkText("Смена пароля")).click();
         //First fiend
         driver.findElement(By.xpath("(//input[@name='password_old']) ")).clear();
         driver.findElement(By.xpath("(//input[@name='password_old'])")).sendKeys("qwerty1234");
         //Second fiend
         driver.findElement(By.xpath("(//input[@name='password'])")).clear();
         driver.findElement(By.xpath("(//input[@name='password'])")).sendKeys("qwerty1234");
         //Third fiend
         driver.findElement(By.xpath("(//input[@name='password_check'])")).clear();
         driver.findElement(By.xpath("(//input[@name='password_check'])")).sendKeys("qwerty1234");
         //Button enter
         driver.findElement(By.cssSelector(".t88_inside_block_3 input[name='change_password']")).click();  


         driver.quit();
    }
}



#131948 Ввод Login and Password в сплывающей форме

Отправлено автор: WhiteCrow 08 июля 2014 - 09:26 в Selenium - Functional Testing

Работает у меня только в GoogleGhrome, в FF все то же самое. как изменить версию FF? установить просто другой?




#131947 Ввод Login and Password в сплывающей форме

Отправлено автор: WhiteCrow 08 июля 2014 - 09:22 в Selenium - Functional Testing

package t;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;



public class Login1  {
    public static void main(String[] args) {

    	
        WebDriver driver = new FirefoxDriver();

       
        driver.get("http://www.komus.ru/myoffice/login");
         //login
         WebElement element = driver.findElement(By.cssSelector("div.t0_block_shadow_2 > #email"));
         element.clear();
         element.sendKeys("123123@yandex.ru");
         WebElement element1 =  driver.findElement(By.id("js-pass"));
         element1.clear();
         element1.sendKeys("qwerty1234");
         WebElement element2 =  driver.findElement(By.xpath("(//input[@name='login'])[2]"));
         element2.click();
         //Change password
         WebElement element3 = driver.findElement(By.linkText("Смена пароля"));
         element3.click();
         driver.findElement(By.xpath("(//input[@name='password_old'])[1]")).clear();
         driver.findElement(By.xpath("(//input[@name='password_old'])[1]")).sendKeys("qwerty1234");
         driver.findElement(By.xpath("(//input[@name='password'])[1]")).clear();
         driver.findElement(By.xpath("(//input[@name='password'])[1]")).sendKeys("qwerty123");
         driver.findElement(By.xpath("(//input[@name='password_check'])[1]")).clear();
         WebElement mat = driver.findElement(By.xpath("(//input[@name='password_check'])[1]"));
         mat.sendKeys("qwerty123");
         
         
         WebElement element4 = driver.findElement(By.xpath("(//input[@value='Продолжить'])"));
//         element4.submit();
         element4.click();
         
    }
}

вот код - ничего кроме одной строчки не менял...у вас точно версии совпадают с моими (ФФ/WD)?

 

FF 30 WD 2.42.2




#131907 Ввод Login and Password в сплывающей форме

Отправлено автор: WhiteCrow 07 июля 2014 - 11:33 в Selenium - Functional Testing

А поподробнее, что значит форма просто обновляется? 

Да. Пр ручном прогоне форма отправляется. При использовании IDE или WebDriver просто происходит обновление

 

cмотрите в сторону xUnit и аннотации Before, After, Test и т.д.

public class login1  {
    public static void main(String[] args) {

( и классы в Джаве с Большой буквы - Login1)


Откуда вы взяли цифры в квадратных скобках?

//input[@name='login'])[2]"));
//input[@name='password_check'])[1]

о селекторах id, name, xpath, css http://www.youtube.c...h?v=ahhaMbjqrxM

и еще раз посмотрите на ваш код (возможно некоторые селекторы лучше заменить)

 

 

Взял пример из селениум IDE при конвертировании на JUnit 4 селектор выглядел так. Я так понял он так находит несколько похожих полей, и цифрой в квадратной скобочке я указываю номер поля по списку сверху.

Спасибо за материал, теперь больше знаю о селекторах и как их искать.

 

Проверил, действительно в FF такая ерунда, почему - пока не понял.

Код работает в IE.

(Конечно [1] не нужны, как и скобки, но дело не в них)

Что касается FF  - вручную отрабатывает, а через селениум - нет. Признаюсь, странно, страничка очень простая.

 

P.S. Извините, похерил ненароком ваш пароль ).

Но сделал взамен другой аккаунт 

123123@yandex.ru

qwerty123

Нечего страшного. Объясните как запустить в IE?

 

 

Вот, что я нашел -  submit  нажимать не надо: 



element4.click();

всё, что изменил в его коде. Страница обновляется из-за (это я так думаю, а на самом деле из-за чего не известно :)):



element4.submit();

У меня: FF  -  29.0, WD - 2.42.2

 

Хм. занятно. Дело в том, что и он так пробовал, и я так пробовал. Да и вообще по идее submit должен работать с любым элементом формы, в том числе и кнопкой. А с submit у вас воспроизводится "просто обновление"? 

Да происходит простое обновление страницы, аналогично через .click

 

 

 

 

 

Я не знаю как решить эту проблему. Селекторы поменял(побывал разные). Подход изменил. Попробовал и через click, и через submit. Структуру немного изменил.

 

Если не сложно скиньте пожалуйста материал с визуальной частью где показывается как подключить IE/Chrome/Opera

 

        driver.get("http://www.komus.ru/myoffice/login");
         //login
         WebElement emailField = driver.findElement(By.cssSelector("div.t0_block_shadow_2 > #email"));
         emailField.clear();
         emailField.sendKeys("123123@yandex.ru");
         WebElement passwordField =  driver.findElement(By.id("js-pass"));
         
         passwordField.clear();
         passwordField.sendKeys("qwerty123");
         WebElement loginField =  driver.findElement(By.cssSelector(".t92_left_col input[alt='login']"));
         loginField.click();
         
         //Сhange password
         
         WebElement linkChange = driver.findElement(By.linkText("Смена пароля"));
         linkChange.click();
         //First fiend
         driver.findElement(By.xpath("(//input[@name='password_old']) ")).clear();
         driver.findElement(By.xpath("(//input[@name='password_old'])")).sendKeys("qwerty123");
         
         //Second fiend
         driver.findElement(By.xpath("(//input[@name='password'])")).clear();
         driver.findElement(By.xpath("(//input[@name='password'])")).sendKeys("qwerty1234");
         
         //Third fiend
         driver.findElement(By.xpath("(//input[@name='password_check'])")).clear();
         WebElement thirdFiend = driver.findElement(By.xpath("(//input[@name='password_check'])"));
         thirdFiend.sendKeys("qwerty1234");
         
         //Button enter
         driver.findElement(By.cssSelector(".t88_inside_block_3 input[name='change_password']")).submit();
         //driver.findElement(By.cssSelector(".t88_inside_block_3 input[name='change_password']")).click(); 

 




#131906 Ввод Login and Password в сплывающей форме

Отправлено автор: WhiteCrow 07 июля 2014 - 11:25 в Selenium - Functional Testing

 

Проверил, действительно в FF такая ерунда, почему - пока не понял.

Код работает в IE.

(Конечно [1] не нужны, как и скобки, но дело не в них)

Что касается FF  - вручную отрабатывает, а через селениум - нет. Признаюсь, странно, страничка очень простая.

 

P.S. Извините, похерил ненароком ваш пароль ).

Но сделал взамен другой аккаунт 

123123@yandex.ru

qwerty123

Я вчера проверял код - немного поменял селекторы и все работало нормально + запускал тесты через JUnit.

 

Привидите пример пожалуйста вашего кода




#131855 Ввод Login and Password в сплывающей форме

Отправлено автор: WhiteCrow 04 июля 2014 - 12:27 в Selenium - Functional Testing

если вы вместо element1-element4 будете использовать loginField, passwordField и т.д., то код будет читать намного легче (и вам тоже, особенно через некоторое время)

Спасибо. Это приму на правку




#131852 Ввод Login and Password в сплывающей форме

Отправлено автор: WhiteCrow 04 июля 2014 - 11:45 в Selenium - Functional Testing

А почему вы используете submit()?

Попробуйте через click();

Я и так и так попробовал.




#131850 Ввод Login and Password в сплывающей форме

Отправлено автор: WhiteCrow 04 июля 2014 - 11:35 в Selenium - Functional Testing

Начал изучать Java и Selenium WedDriver. Появились первые сложности. Пытаюсь написать тест для смены пароля, но не могу отправить форму. Форма просто обновляется.Помогите пожалуйста.

 

Код выкладываю.

Сайт komus.ru

Login = "123451234@yandex.ru" и Pass = "qwerty123" рабочие - от тестового аккаунта.

 

package login;


import java.util.List;


import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;


public class login1  {
    public static void main(String[] args) {


        WebDriver driver = new FirefoxDriver();


        driver.get("http://www.komus.ru/myoffice/login");
         //login
         WebElement element = driver.findElement(By.cssSelector("div.t0_block_shadow_2 > #email"));
         element.clear();
         element.sendKeys("123451234@yandex.ru");
         WebElement element1 =  driver.findElement(By.id("js-pass"));
         element1.clear();
         element1.sendKeys("qwerty123");
         WebElement element2 =  driver.findElement(By.xpath("(//input[@name='login'])[2]"));
         element2.click();
         //Сhange password
         WebElement element3 = driver.findElement(By.linkText("Смена пароля"));
         element3.click();
         driver.findElement(By.xpath("(//input[@name='password_old'])[1]")).clear();
         driver.findElement(By.xpath("(//input[@name='password_old'])[1]")).sendKeys("qwerty123");
         driver.findElement(By.xpath("(//input[@name='password'])[1]")).clear();
         driver.findElement(By.xpath("(//input[@name='password'])[1]")).sendKeys("qwerty1234");
         driver.findElement(By.xpath("(//input[@name='password_check'])[1]")).clear();
         WebElement mat = driver.findElement(By.xpath("(//input[@name='password_check'])[1]"));
         mat.sendKeys("qwerty1234");
         
         
         WebElement element4 = driver.findElement(By.xpath("(//input[@value='Продолжить'])"));
         element4.submit();
         //element4.click();
         
    }
}