Приветствую!
Написал небольшой код для автологина. Пока что логин/пароль прописываю в коде, в дальнейшем буду считывать из файла, но это потом. В данном случае все запускается из 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 - другим батничком, зачем так, не спрашивайте, так надо =)
Готов предоставить недостающую информацию.
Если есть совет, решение или пинок в нужном направлении, жду с нетерпением.