Пакет не найден при запуске javac - PullRequest
0 голосов
/ 10 ноября 2018

Я знаю, что этот вопрос уже задавался тысячу раз, но я до сих пор не могу полностью понять суть проблемы, особенно в моем случае.Итак, у меня есть простой проект с зависимостью библиотек Java TestNG и Selenium, и я установил эти библиотеки глобально, поэтому мой проект просто импортирует их из «глобальной» области.

Итак, чтобы решить проблему, я должен добавить эту глобальную папку в мой путь к классам?Или это не с самого начала, и я не должен использовать библиотеки глобально в проектах?

C:\Users\Yaroslav\IdeaProjects\GoogleSearchTest\src\main\java>javac GoogleSearchTest.java
GoogleSearchTest.java:1: error: package org.openqa.selenium does not exist
import org.openqa.selenium.By;
                          ^
GoogleSearchTest.java:2: error: package org.openqa.selenium does not exist
import org.openqa.selenium.WebDriver;
                          ^
GoogleSearchTest.java:3: error: package org.openqa.selenium does not exist
import org.openqa.selenium.WebElement;
                          ^
GoogleSearchTest.java:4: error: package org.openqa.selenium.chrome does not exist
import org.openqa.selenium.chrome.ChromeDriver;
                                 ^
GoogleSearchTest.java:5: error: package org.testng.annotations does not exist
import org.testng.annotations.BeforeClass;
                             ^
GoogleSearchTest.java:6: error: package org.testng.annotations does not exist
import org.testng.annotations.Parameters;
                             ^
GoogleSearchTest.java:7: error: package org.testng.annotations does not exist
import org.testng.annotations.Test;
                             ^
GoogleSearchTest.java:12: error: cannot find symbol
    private static WebDriver driver;
                   ^
  symbol:   class WebDriver
  location: class GoogleSearchTest
GoogleSearchTest.java:14: error: cannot find symbol
    @BeforeClass
     ^
  symbol:   class BeforeClass
  location: class GoogleSearchTest
GoogleSearchTest.java:23: error: cannot find symbol
    @Test
     ^
  symbol:   class Test
  location: class GoogleSearchTest
GoogleSearchTest.java:24: error: cannot find symbol
    @Parameters("queryText")
     ^
  symbol:   class Parameters
  location: class GoogleSearchTest
GoogleSearchTest.java:17: error: cannot find symbol
        driver = new ChromeDriver();
                     ^
  symbol:   class ChromeDriver
  location: class GoogleSearchTest
GoogleSearchTest.java:26: error: cannot find symbol
        WebElement searchField = driver.findElement(By.cssSelector("#lst-ib"));
        ^
  symbol:   class WebElement
  location: class GoogleSearchTest
GoogleSearchTest.java:26: error: cannot find symbol
        WebElement searchField = driver.findElement(By.cssSelector("#lst-ib"));
                                                    ^
  symbol:   variable By
  location: class GoogleSearchTest
GoogleSearchTest.java:28: error: cannot find symbol
        WebElement searchButton = driver.findElement(By.name("btnK"));
        ^
  symbol:   class WebElement
  location: class GoogleSearchTest
GoogleSearchTest.java:28: error: cannot find symbol
        WebElement searchButton = driver.findElement(By.name("btnK"));
                                                     ^
  symbol:   variable By
  location: class GoogleSearchTest
16 errors

GoogleSearchTest.java

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;

import java.util.concurrent.TimeUnit;

public class GoogleSearchTest {
    private static WebDriver driver;

    @BeforeClass
    public void setup () {
        System.setProperty("webdriver.chrome.driver", "C:\\Program Files\\chromedriver_win32\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.get("https://www.google.com/");
    }

    @Test
    @Parameters("queryText")
    public void doSearch(String queryText) {
        WebElement searchField = driver.findElement(By.cssSelector("#lst-ib"));
        searchField.sendKeys(queryText);
        WebElement searchButton = driver.findElement(By.name("btnK"));
        searchButton.click();
    }
}

1 Ответ

0 голосов
/ 10 ноября 2018

Я наконец понимаю, как это должно быть сделано. Итак, чтобы скомпилировать класс и затем запустить тест TestNG, я сделал это:

javac -cp C:\Users\Yaroslav\IdeaProjects\GoogleSearchTest\lib\* GoogleSearchTest.java

java -cp C:\Users\Yaroslav\IdeaProjects\GoogleSearchTest\src\main\java\;C:\Users\Yaroslav\IdeaProjects\GoogleSearchTest\lib\* org.testng.TestNG testng.xml

Более подробно, в первой строке для компиляции класса должен быть следующий шаблон команды:

javac -cp "full path to libs folder, where project libraries located" "name of class to compile"

А для второй строки, в которой выполняется тест TestNG, шаблон выглядит так:

java -cp "full path to folder where testng.xml file located";"full path to libs folder, where project libraries located" "testNG filename with extension"

И это очень утомительно, как вы можете видеть. Я должен научиться правильно выполнять подобные тесты без головной боли ...

P.S. В конце концов, я просто изучаю Maven, и теперь эти команды не нужны)

...