Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Помогите настроить chromedriver на ubuntu


(Artem) #1

Всем привет!
Это мой первый сабж на форуме,прошу не сильно пинать,если где-то данный вопрос уже был.
Суть вопроса в следующем:
Как мне в Ubunte прописать путь к chromedriver’y дабы при запуске моего теста из Intellij Idea не выпадали ошибки?

Я работал на винде (10), там с этим было как-то проще. Решил пересесть и тут начались проблемы)

К слову, я скачал сам chromedriver
sudo apt-get install chromium-chromedriver

но не понимаю как теперь укзать на него.
Буду благодарен за помощь)

p.s. тест на джаве (если это имеет какое-то значение для решения вопроса)
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;

public class FacebookLogin {

public static WebDriver driver;

public static void main(String[] args) throws InterruptedException {

    driver = new ChromeDriver();


    driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
    driver.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS);

    driver.manage().window().maximize();

    driver.get("https://www.facebook.com");
    driver.findElement(By.xpath("//*[@id=\"email\"]")).clear();
    driver.findElement(By.xpath("//*[@id=\"email\"]")).sendKeys("");

    driver.findElement(By.xpath("//*[@id=\"pass\"]")).clear();
    driver.findElement(By.xpath("//*[@id=\"pass\"]")).sendKeys("");

    driver.findElement(By.xpath("//*[@id=\"loginbutton\"]")).click();

    Thread.sleep(5000);
    System.out.println(driver.getTitle());

    driver.quit();
}

}

в IDE некоторые участки кода подсвечиваются красным:

при попытке запустить, следующие ошибки:


(Eugene Moskalenko) #2

Установка на Linux

вот ссылочка - https://christopher.su/2015/selenium-chromedriver-ubuntu/ - так все сделали?

вот тут версию глянуть можно и скачать вручную - https://chromedriver.storage.googleapis.com/index.html.

У меня стоит:

evgmoskalenko$ chromedriver -v
ChromeDriver 2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b)

по факту файл должен лежать в директориях - /usr/local/bin/chromedriver и /usr/bin/chromedriver

для этого вам надо его скачать, достать файл из архива, закинуть на компьютере (неважно куда, главное чтобы этот файл потом там всегда лежал, в инструкции его кладут сюда - /usr/local/share/chromedriver, сделайте так же) и оттуда сделать симлинки на директории: /usr/local/bin/chromedriver и /usr/bin/chromedriver. Таким образом подменяя версию откуда были сделаны симлинки - версия изменится в системных директориях

По поводу красного

скинуть сюда содержимое файла pom.xml можете? :slight_smile:

Такое впечатление, что не хватает зависимости:

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

версия в вашем файле может быть другая


(Artem) #3

подскажите пожалуйста как это сделать?) (я только начал изучать всё это дело, прошу не бросать помидорами)

всё делал как в интсрукции,но после команды
sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver
в usr/bin у меня файл с крестиком
что это значит? это так и должно быть?


(Eugene Moskalenko) #4

команды, выше:

  • sudo mv -f chromedriver /usr/local/share/chromedriver - перемещает файл chromedriver в директорию /usr/local/share/ (mv, от слова move)
  • sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver - создает симлинк (символическую ссылку), в данном случае создает такую ссылку в директории /usr/local/bin/ на файл chromedriver из директории - /usr/local/share/

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

по поводу комманд почитайте вот это - http://forum.ubuntu.ru/index.php?topic=14535.15 и вот это еще читните - https://www.ibm.com/developerworks/ru/library/l-lpic1-v3-104-6/

когда видите команды терминала в инструкции - не выполняйте их слепо никогда, сначала почитайте, что каждая из них означает…

Я так понял chromedriver вы уже установили по инструкции выше.

Дело в том, что красное в коде, как у вас на скрине - к файлу chromedriver, никакого отношения не имеет.

Чем вы собираете проект на Java? Maven, Ant или может Gradle? Установлен ли он вообще на вашем линуксе?

Вот этот видео-урок гляньте - https://www.youtube.com/watch?v=nqaY0UgRcFQ (ненашел на русском, в ютубе одни индусы)… А вообще желательно, чтобы вы скинули свой проект на GitHub и могли давать на форуме этом, ссылочку, чтобы можно было покрутить посмотреть, че вы там накодили и помочь сделать вам что-то…


(Artem) #5

Продолбался целый день с этой штукой и нашел место в котором проблема,но все же сам не могу решить.

Суть в чем:
java стоит

maven тоже

но почему-то при загрузке проекта в IntelliJ Iddea Maven’a нет. В чем может быть проблема?


(Eugene Moskalenko) #6

А как понять Maven’a нет? :slight_smile:

при открытии проекта нет такой вкладки - http://take.ms/0UBco? Или вкладка есть и развернуть ее можно, но внутри пусто - http://take.ms/4EsPo? Есть в проекте такие файлы - http://take.ms/abn66?

Кстати, в маке у меня есть файлик .bash_profile, поидее в Ubuntu он тоже должен быть - http://take.ms/osTBf. Есть у вас файл такой, что в нем написано? Хотя если консоль схавала mvn --version, тогда дело наверное не в нем.

Можете чуть конкретизировать пожалуйста?


(Artem) #7

Совершенно верно. При откртытии IDE, справа нет вкладки Maven.

Поэтому я и не могу сказать что записано в pom.xml, так как в моем проекте попросту такого файла нет. Но, как Вы уже уточнили, [quote=“evgmoskalenko, post:6, topic:13845”]
консоль схавала mvn --version
[/quote]
поэтому как-то все это странно. Не могу понять в чем, собственно, дело)


(Eugene Moskalenko) #8

А в меню попробуйте глянуть View -> Tool Windows -> Maven Projects, есть такое?


(Artem) #9

да, есть. По нажатие на данный пунтк, в IDE появилось следующее окно:


(Oleksii Ihnatiuk) #10

Вы создаете проект, то у вас должны быть опция: Maven, Gradle etc. Если это будет например Maven, то в директории проекта будет pom.xml файл, в котором прописываются зависимости, конфигурации и еще много чего. Потом вы ищете как правильно установить Selenium с помощью Maven на ubuntu и изменяте ваш pom.xml. Например:

<?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>org.healthoutcome.dev</groupId>
    <artifactId>HealthOutcome</artifactId>
    <version>1.0</version>

    <properties>
        <aspectj.version>1.7.4</aspectj.version>
        <allure.version>1.5.2</allure.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-support</artifactId>
            <version>3.4.0</version>
        </dependency>

 </dependencies>

....

(Eugene Moskalenko) #11

Яссно, создайте файл, в корне проекта - pom.xml, добавьте туда такое:

<?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>lessons</groupId>
    <artifactId>lessons</artifactId>
    <version>v0.1</version>

    <name>${project.artifactId}</name>
    <description>Lessons</description>

    <properties>
        <!-- Configuration -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <!-- Dependencies Versions -->
        <compiler.version>1.8</compiler.version>
        <testng.version>6.8.13</testng.version>

        <!--Plugin Versions-->
        <maven-compiler-plugin.version>3.3</maven-compiler-plugin.version>
        <maven-surefire-plugin.version>2.19</maven-surefire-plugin.version>
        <versions-maven-plugin.version>2.2</versions-maven-plugin.version>

        <!-- Directory Properties -->
        <resource-test.directory>${project.basedir}/src/test/resources</resource-test.directory>
    </properties>

    <dependencies>

        <!-- Selenium-->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-firefox-driver</artifactId>
            <version>3.4.0</version>
        </dependency>

        <!-- TestNG -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>${testng.version}</version>
            <!--<scope>compile</scope>-->
            <!--<scope>test</scope>-->
        </dependency>
    </dependencies>

    <build>
        <finalName>${project.name}-${project.version}</finalName>
        <resources>
            <resource>
                <directory>${resource-test.directory}</directory>
                <filtering>true</filtering>
            </resource>
        </resources>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven-compiler-plugin.version}</version>
                <configuration>
                    <source>${compiler.version}</source>
                    <target>${compiler.version}</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${maven-surefire-plugin.version}</version>
            </plugin>
        </plugins>
    </build>

</project>

Должно получится как-то так - https://github.com/evgmoskalenko/web-qa-java-framework/blob/master/pom.xml, только в файл добавляйте, что выше скинул

ВАЖНО: вам надо прочесть вот это - http://www.apache-maven.ru/project-file.html, как можно скорее :slight_smile:


(Artem) #12

Вообщем всё заработало)
Вдруг у кого-то когда-нибудь тоже возникнутподобные проблемы, поэтому хочу описать шаги которые я делал:

1. Установить JDK

sudo apt-get update
sudo apt-get install default-jre
sudo apt-get install default-jdk

2. Скачать Maven

sudo apt-get install maven

Проверить, что все корректно установилось, проверив версию:

mvn -version

3. Прописать переменные в variables.sh (Путь: /etc/profile.d)
Открываем variables.sh через команду:

sudo nano variables.sh

3.1 прописываем переменные для java:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_131
export PATH=$JAVA_HOME/bin:$PATH

3.2 прописываем переменные для Maven:

export M2_HOME=/usr/local/maven/apache-maven-3.2.5
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

Нажимаем Ctrl+O для сохранения;
Enter для подтверждения;
Ctrl+X для выхода.

4. Установить chromedriver

sudo apt-get install unzip

wget -N http://chromedriver.storage.googleapis.com/2.26/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
chmod +x chromedriver

sudo mv -f chromedriver /usr/local/share/chromedriver
sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver

5. Скачать IntelliJ Idea
Создав проект, нужно зайти в:
File - Project Structure - SDKs

в JDK home path прописать путь к нашей JVM
в моем случае:
/usr/lib/jvm/jdk1.8.0_131

Apply - OK

6. Прописать зависимости в файле pom.xml
Их скопировать из последнего сообщения @evgmoskalenko в данном топике

P.S. Спасибо большое @evgmoskalenko за помощь в решении проблемы) Если будут какие-то вопросы ко мне - обращайтесь, с радостью помогу!


(Eugene Moskalenko) #13

прочтите еще вот это:

и посмотрите что это ваще за файл такой pom.xml, разберитесь, че там за зависимости и зачем этот файл вообще нужен. Дело в том, что вы используете сборщик Maven, для него нужен конфигурационный файл проекта, так сказать, в котором собраны все зависимости проекта и прочие плагинчики.