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

Публикации holydiverinc

1 публикаций создано holydiverinc (учитываются публикации только с 21 апреля 2023)


#165047 Как сделать исполняемый файл?

Отправлено автор: holydiverinc 27 февраля 2018 - 11:37 в Selenium - Functional Testing

Приветствую!

Написал небольшой код для автологина. Пока что логин/пароль прописываю в коде, в дальнейшем буду считывать из файла, но это потом. В данном случае все запускается из IDEA и отрабатывает как надо. Пытался сделать jar, bat, exe - не запускается (командная строка говорит Error: An unexpected error occurred while trying to open file loginFF.jar). Может глянете, подскажите, что делаю не так. Нужен именно файл, который можно будет запустить на любой машине.

import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.nio.file.Paths;
import java.util.concurrent.TimeUnit;
 
 
public class Login{
 
    public static void main(String[] args) throws InterruptedException {
        setup();
        userLogin();
    }
    private static WebDriver d;
 
    @BeforeClass
    public static void setup() {
//прописываем путь к драйверу в системную переменную
        String pathToGeckoDriver = Paths.get("E:\\WORK\\QA\\GIT\\geckodriver\\geckodriver.exe").toAbsolutePath().toString();
        System.setProperty("webdriver.gecko.driver", pathToGeckoDriver);
//используем свой профиль фаерфокса
        System.setProperty("webdriver.firefox.profile", "default");
//создаем экземпляр вебдрайвера
        d = new FirefoxDriver();
//небольшие настройки
        d.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        d.manage().window().maximize();
//целевой сайт
        d.get("http://promotions.williamhill.com");
 
    }
 
    @Test
    public static void userLogin() throws InterruptedException {
//строчные переменные для простоты использования локаторов
        String loginButtonXPath = "/html/body/div[2]/div/div/div[2]/wf-header/header/div/div[2]/wf-user-button/div/a/span";
        String loginFieldCSS = "#login-form-username";
        String passFieldCSS = "#login-form-password";
//взаимодействие с элементами 
        d.findElement(By.xpath(loginButtonXPath)).click();
        d.findElement(By.cssSelector(loginFieldCSS)).clear();
        d.findElement(By.cssSelector(loginFieldCSS)).sendKeys("demarNOIR");//тестовый логин
        d.findElement(By.cssSelector(passFieldCSS)).clear();
        d.findElement(By.cssSelector(passFieldCSS)).sendKeys("DN1983az");//тестовый пароль
        d.findElement(By.cssSelector(passFieldCSS)).sendKeys(Keys.ENTER);
        Thread.sleep(20000000);
 
    }
}

Вот maven:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>logFF</groupId>
    <artifactId>loginFF</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.9.1</version>
        </dependency>

        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.2</version>
            <scope>test</scope>
        </dependency>

    </dependencies>
</project> 

Слип там спецом, не ругайте. Гекодрайвер и фаерфокс убиваю из cmd -> taskkill ****.exe /F /IM - другим батничком, зачем так, не спрашивайте, так надо =)

 

Готов предоставить недостающую информацию.
Если есть совет, решение или пинок в нужном направлении, жду с нетерпением.