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

WhiteCrow

Регистрация: 04 июл 2014
Offline Активность: 06 авг 2014 05:30
-----

Мои темы

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

15 июля 2014 - 07:20

Привет всем. Я недавно начал изучать селениум 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)));
   }
}
 

 


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

14 июля 2014 - 08:46

Привет всем. У меня не работает перетаскивание ползунка. Судя по ошибке - не находиться селектор. Хотя я его указал верно. Побывал разные варианты селекторов  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)
 

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

04 июля 2014 - 11:35

Начал изучать 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();
         
    }
}