Добрый день!
Поставил перед собой задачу научиться использовать SELENIUM.
Что имеем на текущий момент:
1) Поставил Eclipse IDE for Java Developers.
2) Поставил FireFox 14.0.1 и установил на него Selenium IDE 1.9.0.
3) Создал в Eclipse Package и прикрутил selenium-server-standalone-2.25.0.jar.
4) Создаю тесты с помощью Selenium IDE 1.9.0 в FireFox, конвертирую в JUnit.
5) То что получилось в JUnit копирую в Eclipse, подправляю, запускаю все работает отлично.
Но вот запустить Internet Explorer в Eclipse не удается.
Что делал:
1) Почитал http://selenium2.ru/articles/52-how-to-start-internet-explorer.html
2) Скачал IEDriverServer_Win32_2.24.2.zip.
3) Кидал exe файл в разные каталоги и писал в тестах следующее (удалив строку для FireFox --> driver = new FirefoxDriver() ):
System.setProperty("webdriver.ie.driver", "C:\\DriversForSelenium2\\IEDriverServer.exe");
WebDriver driver = new InternetExplorerDriver();
У меня возникло два вопроса:
1) Как\где в Eclipse правильно показать где лежит у меня IEDriverServer.exe, предположим у меня лежит C:\DriversForSelenium2\IEDriverServer.exe?
2) Ну и вообще, что я делаю не так?
Заранее спасибо за помощь.
WebDriver driver = new InternetExplorerDriver("C:\\DriversForSelenium2\\IEDriverServer.exe");
Спасибо за ответ, пишу теперь так:
public void setUp() throws Exception {
System.setProperty("webdriver.ie.driver", "C:\\IEDriverServer.exe");
WebDriver driver = new InternetExplorerDriver("C:\\IEDriverServer.exe");
baseUrl = "http://mail.ru/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
Кинул файл в "C:\IEDriverServer.exe".
Это правильно?
Где в Eclipse прописать путь к этому файлу IEDriverServer.exe? т.к. без того работать не будет если я даже правильно написал выше.
User12, в моем первом посте ссылка именно на эту статью, но у меня не получается, т.к. что то не правильно делаю.
все так делаете.
Какая у вас месага об ошибке ?
м.б. не импортнули что-нибудь или еще что-то
так не надо писать:
System.setProperty("webdriver.ie.driver", "C:\\IEDriverServer.exe");
WebDriver driver = new InternetExplorerDriver("C:\\IEDriverServer.exe");
Зачем дублировать path ?
WebDriver driver = new InternetExplorerDriver();
Кстати. только что посмотрел.
driver = new ChromeDriver("D:\\selenium2\\chromedriver.exe"); - не работает!
The file D:\selenium2\chromedriver.exe\chromedriver.exe does not exist. The driver can be downloaded at http://code.google.com/p/chromium/downloads/list
driver = new ChromeDriver("D:\\selenium2"); - работает!
Имя самого файла указывать не нужно. по крайней мере в C#.
System.setProperty("webdriver.ie.driver", "E:\\folder_name\\IEDriverServer.exe");
driver = new InternetExplorerDriver();
Такой код работает
тут м.б. человек скачал не тот файл, м.б. следует файл скачать заново, м.б. использовал ccleaner, м.б. не сделан какой-нибудь импорт
import org.openqa.selenium.ie.InternetExplorerDriver;
м.б. еще что-то
Выше приведенный код работает
да. статья говорит, что для джавы можно указывать полный путь к файлу. я просто на шарпе пишу, мне не ведомы тонкости настройки в эклипсе =)
в шарпе даже System.setProperty то и нету.
Все заработало, оказалось я не внимательно прописал путь PATH, поправил и
прописал:
driver = new InternetExplorerDriver()
и сделал import org.openqa.selenium.ie.InternetExplorerDriver.
Спасибо всем за помощь)
В Firefox все работает, а вот для IE сразу падает в ошибку(веб драйвер запускается т.к. в консоли пишет Started InternetExplorerDriver server (32-bit)2.25.2.0 Listening on port 22018)
Сам тест:
package test;
import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.support.ui.Select;
public class testqa {
private WebDriver driver;
private String baseUrl;
private StringBuffer verificationErrors = new StringBuffer();
@Before
public void setUp() throws Exception {
driver = new InternetExplorerDriver();
baseUrl = "http://www.vl.ru/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void testUntitled() throws Exception {
driver.get(baseUrl + "/");
driver.findElement(By.linkText("Карта Владивостока")).click();
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try { if (isElementPresent(By.cssSelector("html body div.page div.head a.logo"))) break; } catch (Exception e) {}
Thread.sleep(1000);
}
driver.findElement(By.cssSelector("#searchItem")).clear();
driver.findElement(By.cssSelector("#searchItem")).sendKeys("100 лет");
driver.findElement(By.cssSelector("input[type=\"submit\"]")).click();
for (int second = 0;; second++) {
if (second >= 60) fail("timeout");
try { if ("Артем, 40 лет Октября ул.".equals(driver.findElement(By.linkText("Артем, 40 лет Октября ул.")).getText())) break; } catch (Exception e) {}
Thread.sleep(1000);
}
}
@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
private boolean isElementPresent(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
}
Видимо проблема была в машине с которой запускал eclipse, дома в запустилось без проблем, но тест упал, из за того что некоторые локаторы работающие на FireFox не работали в IE.
С помощью FireBug и Firepath подобрал локаторы и все заработало!!! Selenium вещь)))
Эта строчка кода прикольная:
if ("Артем, 40 лет Октября ул.".equals(driver.findElement(By.linkText("Артем, 40 лет Октября ул.")).getText()))
А что с ней не так?))) я просто еще языка не знаю практически, но хочется верить что он проверяет есть ли такая надпись на странице.
Да нормальная строчка. Просто скобок много в этих точечных языках.
if ( Get-SeWebElement -PartialLinkText '40 лет Октября') {
# your condition
}
ну много скобочек, ничего плохого тут нету
хотя согласен, выглядит интересно :)