Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Selenium для Internet Explorer


(FreeMan) #1

Добрый день!

Поставил перед собой задачу научиться использовать 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) Ну и вообще, что я делаю не так?

Заранее спасибо за помощь.


(metr95) #2

WebDriver driver = new InternetExplorerDriver("C:\\DriversForSelenium2\\IEDriverServer.exe");


(FreeMan) #3

Спасибо за ответ, пишу теперь так:

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) #4

посмотрите здесь

http://selenium2.ru/articles/52-how-to-start-internet-explorer.html


(FreeMan) #5

User12, в моем первом посте ссылка именно на эту статью, но у меня не получается, т.к. что то не правильно делаю.


(user12) #6

все так делаете.

 

Какая у вас месага об ошибке ?

м.б. не импортнули что-нибудь или еще что-то

так не надо писать:

     System.setProperty("webdriver.ie.driver", "C:\\IEDriverServer.exe");
        WebDriver driver = new InternetExplorerDriver("C:\\IEDriverServer.exe");

 

Зачем дублировать path ?

WebDriver driver = new InternetExplorerDriver();

 


(metr95) #7

Кстати. только что посмотрел. 

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#.


(user12) #8

     System.setProperty("webdriver.ie.driver", "E:\\folder_name\\IEDriverServer.exe");
         driver = new InternetExplorerDriver();

 

Такой код работает

тут м.б. человек скачал не тот файл, м.б. следует файл скачать заново, м.б. использовал ccleaner, м.б. не сделан какой-нибудь импорт

import org.openqa.selenium.ie.InternetExplorerDriver;

м.б. еще что-то

 

Выше приведенный код работает

 


(metr95) #9

да. статья говорит, что для джавы можно указывать полный путь к файлу. я просто на шарпе пишу, мне не ведомы тонкости настройки в эклипсе =)

в шарпе даже System.setProperty то и нету.


(FreeMan) #10

Все заработало, оказалось я не внимательно прописал путь  PATH, поправил и

прописал:

driver = new InternetExplorerDriver()

и сделал import org.openqa.selenium.ie.InternetExplorerDriver.

Спасибо всем за помощь)


(FreeMan) #11

В 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;
        }
    }
}
 


(FreeMan) #12

Видимо проблема была в машине с которой запускал eclipse, дома в запустилось без проблем, но тест упал, из за того что некоторые локаторы работающие на FireFox не работали в IE.
С помощью FireBug и Firepath подобрал локаторы и все заработало!!! Selenium вещь)))


Помощь новичку c основами Firebug и составлении локаторов
(user12) #13

Эта строчка кода прикольная:

 

if ("Артем, 40 лет Октября ул.".equals(driver.findElement(By.linkText("Артем, 40 лет Октября ул.")).getText()))

 

 


(FreeMan) #14

А что с ней не так?))) я просто еще языка не знаю практически, но хочется верить что он проверяет есть ли такая надпись на странице.


(apetrovskiy) #15

Да нормальная строчка. Просто скобок много в этих точечных языках.

if ( Get-SeWebElement -PartialLinkText '40 лет Октября') {

# your condition

}


(Mykhailo Poliarush) #16

ну много скобочек, ничего плохого тут нету

хотя согласен, выглядит интересно :)


(Sergey Korol) #17

3 сообщений перенесены в новую тему: Помощь новичку c основами Firebug и составлении локаторов