Запуск Selenium на Дженкинсе требует моего локального chromedriver

#java #jenkins #selenium-webdriver

Вопрос:

Я пытаюсь протестировать наш веб-сайт с помощью selenium через Дженкинса, чтобы каждый день тестировалась каждая функция.

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

Сообщение об ошибке:

[ОШИБКА] главная(в.s2gplus.селен.TestPromoteToAdmin) Прошедшее время: 0,006 с << java.lang.Исключение IllegalStateException: Исполняемый файл драйвера не существует: /opt/jenkins/workspace/buzzApi/C:/Users/mario/AppData/Local/Google/Chrome/Application/chromedriver.exe в at.s2gplus.селен.TestPromoteToAdmin.main(TestPromoteToAdmin.java:36)

Код:

 public class TestPromoteToAdmin {
    
WebDriver driver = new ChromeDriver();


@Test
public void main() {


    
    driver.get("https://192.168.1.45:8080/");
    WebDriverWait wait = new WebDriverWait(driver, 90);
    
    driver.manage().window().maximize();

    driver.findElement(By.id("details-button")).click();
    driver.findElement(By.id("proceed-link")).click();
    driver.findElement(By.id("home-open-sign-in")).click();
    driver.findElement(By.id("login-username")).sendKeys("tester");
    driver.findElement(By.id("login-password")).sendKeys("wurst01");
    driver.findElement(By.id("login-action")).click();
    
    wait.until(ExpectedConditions.elementToBeClickable(By.id("left-menu-room-title-add-action"))).click();
    driver.findElement(By.id("create-room-name-input")).sendKeys("Selenium Admin test");
    driver.findElement(By.id("create-room-description-input")).sendKeys("Selenium Test");
    driver.findElement(By.id("create-room-save")).click();
    
    JavascriptExecutor js = (JavascriptExecutor) driver;
    WebElement roomToClick = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[contains(text(), 'Selenium Admin test')]")));
    js.executeScript("arguments[0].scrollIntoView();", roomToClick);
    try {
        Thread.sleep(500);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    wait.until(ExpectedConditions.elementToBeClickable(roomToClick)).click();
    wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[contains(@id, 'left-roomlist-settingsicon')]"))).click();
    WebElement addMemberBtn = wait.until(ExpectedConditions.elementToBeClickable(By.id("room-settings-add-user")));
    addMemberBtn.click();
            
     
    WebElement checkBox = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("label[for='990bd6a8-62af-48c5-89a5-33019483c91f'")));//("cb732433-eae9-434b-96da-b4d5a499208c"));
    checkBox.click();
    WebElement addBtn = driver.findElement(By.id("room-settings-add-button"));
    addBtn.click();
    WebElement saveUserBtn = driver.findElement(By.id("room-settings-save"));
    saveUserBtn.click();
    
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
    wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[contains(@id, 'left-roomlist-settingsicon')]"))).click();
    
    wait.until(ExpectedConditions.elementToBeClickable(By.id("general-menu-list-item-settings"))).click();
    wait.until(ExpectedConditions.elementToBeClickable(By.id("room-settings-context-change-role-to-moderator"))).click();
    
    wait.until(ExpectedConditions.elementToBeClickable(By.id("general-menu-list-item-settings"))).click();
    wait.until(ExpectedConditions.elementToBeClickable(By.id("room-settings-context-change-role-to-admin"))).click();
    driver.findElement(By.id("room-settings-save")).click();
    driver.findElement(By.id("top-logout")).click();

    driver.findElement(By.id("home-open-sign-in")).click();
    driver.findElement(By.id("login-username")).sendKeys("tester01");
    driver.findElement(By.id("login-password")).sendKeys("wurst02");
    driver.findElement(By.id("login-action")).click();
    
    roomToClick = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[contains(text(), 'Selenium Admin test')]")));
    js.executeScript("arguments[0].scrollIntoView();", roomToClick);
    try {
        Thread.sleep(500);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    wait.until(ExpectedConditions.elementToBeClickable(roomToClick)).click();
    
    WebElement roomAdmin = driver.findElement(By.xpath("//span[contains(text(), 'Selenium Admin test')]"));
    String room = roomAdmin.getText();
    assertTrue(room, true);
    
    wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//span[contains(@id, 'left-roomlist-settingsicon')]"))).click();
    wait.until(ExpectedConditions.elementToBeClickable(By.id("meeting-settings-open-close-room-modal"))).click();
    wait.until(ExpectedConditions.elementToBeClickable(By.id("meeting-settings-close-room-confirm"))).click();

}

@BeforeTest
public void beforeTest() {
ChromeOptions options = new ChromeOptions();
options.setHeadless(true);
options.setAcceptInsecureCerts(true);
driver = new ChromeDriver(options);  
}       
@AfterTest
public void afterTest() {
    driver.quit();          
}       
}
 

строка 36 выше driver.get("https://192.168.1.45:8080/"); , но я удалил ее давным-давно

Ответ №1:

Установите плагин Selenium Grid в Jenkins, используйте приведенный ниже код для настройки узла. Обновите версии автономного jar-файла selenium server и версии браузера в приведенном ниже коде.

 java -jar selenium-server-standalone-x.xx.x.jar - 
Dwebdriver.chrome.driver="C:yourpathchromedriver.exe" -role node -hub 
http://localhost:4444/grid/register -browser "browserName=internet 
explorer,version=xx,platform=WINDOWS" -browser 
"browserName=chrome,version=xx,platform=WINDOWS" 
 

Ответ №2:

Пожалуйста, обновите нижеприведенную строку кода для запуска

     
WebDriver driver = null;


@Test
public void main() {

  System.setProperty("webdriver.chrome.driver","E:\drivers\ChromeDrivers\85\chromedriver.exe");
    driver = new ChromeDriver();
    driver.get("https://192.168.1.45:8080/");
    WebDriverWait wait = new WebDriverWait(driver, 90);
    
    driver.manage().window().maximize(); ```
 

Комментарии:

1. Пожалуйста, создайте папку с драйверами в своей среде и сохраните драйвер chrome и передайте chromedriver в системном свойстве System.setProperty(«webdriver.chrome.driver»,»E:\drivers\ChromeDrivers\85\chromedriver.exe»);