Как запустить селен вебдрайвер из Linux (в настоящее время работает в Windows)? - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть этот код, который выполняется локально с использованием моей IDE (intellij):

public class ConnectAndBrowse {
    WebDriver driver;
    private String m_baseUrl = "https://tinyurl.com/";
    private String m_toShortenURL;
    private ArrayList<String> tabs2;

    public ConnectAndBrowse( String i_toShortenURL ) throws MalformedURLException {
        setUp(i_toShortenURL);
    }

    private void setUp(String i_toShortenURL) throws MalformedURLException {
        System.setProperty("webdriver.chrome.driver","./src/main/resources/drivers/chromedriver.exe");
        driver = new ChromeDriver();
        m_toShortenURL = i_toShortenURL;
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    }

    public WebDriver browseToUrlWithShortLink() throws Exception {
        driver.get(m_baseUrl);
        driver.findElement(By.id("url")).click();
        driver.findElement(By.id("url")).clear();
        driver.findElement(By.id("url")).sendKeys(m_toShortenURL);
        driver.findElement(By.id("submit")).click();
        driver.findElement(By.linkText("Open in new window")).click();
        return driver;
    }

    public String returnShortLink(WebDriver driver) {

        String data = driver.findElement(By.xpath("//*[@id=\"contentcontainer\"]/div[2]/b")).getText();
        return data;
    }

}

и это мой основной класс:

public class ManagerService {

    public static void main(String[] args) {
        try {
            FactoryHelper factoryHelper = new FactoryHelper();
            Properties prop = factoryHelper.getPropFile();
            String toShorten = prop.getProperty("defaultUrl");
            ConnectAndBrowse connectAndBrowse = new ConnectAndBrowse(toShorten);
            WebDriver driver=connectAndBrowse.browseToUrlWithShortLink();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

Я использую maven (pom.xml) только для загрузки выделенных драйверов. Теперь я хочу запустить его из Linux, и я изо всех сил пытаюсь это сделать. Любая идея, что я предполагаю добавить в мой код?

1 Ответ

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

Ваша версия драйвера должна быть изменена в соответствии с версией Linux. Вы можете скачать версию linux chromedriver и поместить ее в папку ресурсов. Вы можете добавить расширение .exe на основе os.

String chromedriverPath="./src/main/resources/drivers/chromedriver"
if(System.getProperty("os.name").toLowerCase().contains("win"))
   chromedriverPath+=".exe"
System.setProperty("webdriver.chrome.driver",chromedriverPath);
driver = new ChromeDriver();

или

Вы можете просто обработать загрузку драйвера программно на основе версии ОС, используя Webdriver Manager

Добавьте эту зависимость jar к вашему pom,

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>3.0.0</version>
    <scope>test</scope>
</dependency>

Затем добавьте эту строку перед запуском драйвера. Это автоматически загрузит соответствующую версию драйвера и установит переменную пути во время выполнения.

WebDriverManager.chromedriver().setup();
driver = new ChromeDriver();
...