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

Браузеры (Firefox, Chrome) не запускают тесты.

firefox
webdriver
chrome
Теги: #<Tag:0x00007f7b629adc80> #<Tag:0x00007f7b629adb40> #<Tag:0x00007f7b629ada00>

(Anatoliy Velikokhatskiy) #1

Браузеры (Firefox, Chrome) не запускают тесты.

вот что происходит на firefox.

package com.example.tests;

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.firefox.MarionetteDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.Select;

public class Testclass {
  private WebDriver driver;
  private String baseUrl;
  private boolean acceptNextAlert = true;
  private StringBuffer verificationErrors = new StringBuffer();

  @Before
  public void setUp() throws Exception {
	  
	  
	  System.setProperty("webdriver.gecko.driver", "C:/Avel/javaproj/Geckodriver/v2/geckodriver.exe");
	  DesiredCapabilities capabilities = DesiredCapabilities.firefox();
	  capabilities.setCapability("marionette", true);
	  WebDriver driver = new MarionetteDriver(capabilities);
	  
    driver = new FirefoxDriver();
    baseUrl = "https://www.google.com.ua/";
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
  }

  @Test
  public void testUntitled() throws Exception {
    driver.get(baseUrl + "/?gfe_rd=cr&ei=0Q8KWOufLO2A6ASO-7iACQ&gws_rd=ssl");
    driver.findElement(By.id("lst-ib")).clear();
    driver.findElement(By.id("lst-ib")).sendKeys("new query");
    driver.findElement(By.name("btnG")).click();
    driver.findElement(By.linkText("Class Reference/WP Query « WordPress Codex")).click();
  }

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

  private boolean isAlertPresent() {
    try {
      driver.switchTo().alert();
      return true;
    } catch (NoAlertPresentException e) {
      return false;
    }
  }

  private String closeAlertAndGetItsText() {
    try {
      Alert alert = driver.switchTo().alert();
      String alertText = alert.getText();
      if (acceptNextAlert) {
        alert.accept();
      } else {
        alert.dismiss();
      }
      return alertText;
    } finally {
      acceptNextAlert = true;
    }
  }
}

(Vasiliy Rakshin) #2

И какой же версии у вас FF?
Версия хромдрайвера и хрома?


(Alex) #3

На сколько я знаю, Selenium до сих пор не работает с FireFox выше 46-й версии
Про Хром сказать ничего не могу


(Sergey QA) #4

Так ты объявляешь не тот драйвер, лол, во-первых, надо объявлять:
WebDriver driver = new MarionetteDriver();

Во-вторых, указывай путь к лаунчеру относительным.


(Anatoliy Velikokhatskiy) #5

to BabyRoot -> FF 49.0.2, Chrome driver 2,9, Chrome Version 54.0.2840.71 m (64-bit)


(Anatoliy Velikokhatskiy) #6

to Sudalius -> Вы уверены?


(Anatoliy Velikokhatskiy) #7

to seitar18 -> всеравно падают тесты.


(Alex) #8

уверен…сам всегда на новую машину 46-ю версию ставлю


(Anatoliy Velikokhatskiy) #9

to Sudalius -> спасибо сейчас попробую


(Anatoliy Velikokhatskiy) #10

@Sudalius -> Поставил FF 46 - появляется exception


(Anatoliy Velikokhatskiy) #11

Кто то знает что это за эксепшн?


(Сергей Кузьмин) #12

смотрите что в TestClass строке 38 ?

 @Test
  public void testUntitled() throws Exception {
    driver.get(baseUrl + "/?gfe_rd=cr&ei=0Q8KWOufLO2A6ASO-7iACQ&gws_rd=ssl");
    driver.findElement(By.id("lst-ib")).clear();
    driver.findElement(By.id("lst-ib")).sendKeys("new query");
    driver.findElement(By.name("btnG")).click();
    driver.findElement(By.linkText("Class Reference/WP Query « WordPress Codex")).click();
  }

какой-то из driver.findElement не найден - а вы по нему со всего размаха кликаете ! - нехорошо

assertThat( driver.findElement(By.id("lst-ib")), notNullValue());

ну и т.д.


(Kosmos) #13
  1. Что в pom?
  2. Пропишите еще System.setProperty("webdriver.firefox.driver","C:\\Program Files\\Mozilla Firefox15\\Firefox.exe") после пути к gecko

(Anatoliy Velikokhatskiy) #14

Все заработало сенкс


(Yaroslav Pernerovskyy) #15

У вас в коде ошибка.
На скриншоте там даже ворниг подсвечнен:

WebDriver driver = new MarionetteDriver (…

Надо писать:

driver = new MarionetteDriver (…


(Anatoliy Velikokhatskiy) #16

Спасибо


(Alexander Zvonov) #17

Selenium работает с версиями выше 46.
Но, стоит отметить, что код необходимый для запуска фф активно менялся на стадии беты.

В случае с Selenium 3 и FF вам нужно следующее:

    System.setProperty("webdriver.gecko.driver", "%pathToGeckoDriverFolder%\\geckodriver.exe");
    DesiredCapabilities capabilities = DesiredCapabilities.firefox();
    capabilities.setCapability("marionette", false);
    driver = new FirefoxDriver(capabilities);

(Anatoliy Velikokhatskiy) #18

Спасибо. Подскажите еще кто какой использует метод для выбора из выпадающего списка?

использую тупой клик:

driver.findElement(By.xpath("//span/span/span")).click();
driver.findElement(By.xpath("//div[3]/ul/li[2]")).click();

Ничего не происходит.
использую Select:

Select select = new Select(driver.findElement(By.xpath("//form[@id='addClientForm']/div/div[6]/div/span/span/span[2]")));
select.selectByVisibleText("Albania");

Всеравно ничего не происходит. Тест выполняется до этого момента - и все - ступор.


(Alexander Zvonov) #19
  1. Хорошенько изучите ваш элемент в DOM. Возможно там используется не стандартный Select
    К примеру может быть Select2 или JS обертка на input. В таком случае стандартные методы селениума работать не будут.

  2. Если в DOM стандартный select попробуйте использовать альтернативный метод для выбора элемента
    .selectByIndex или .selectByValue


(Anatoliy Velikokhatskiy) #20

Значения из дропдайна в кендовской обертке. В таком случае стандартные методы селениума работать не будут. А есть какие то нестандартные методы?