0. Introduction
In Edureka there are plenty of instructions for installing Selenium. This web has been my inspiration source.
The main requirements are:
- Java SDK (version 10 or newer version) from Oracle. Note that the link points to JDK 11 and I am using java 10!!! in this post
- Elipse IDE (Photon or newer version)
- Project Lombok (only if you want to avoid Setters and Getters verbosity)
- Selenium Java, or maybe better, this link for ChromeDriver
- Adapted executable browsers.
1. Installing adapted browsers
Selenium need adapted browser versions that should be downloaded. You should install them and write down the route to these executables. On the Selenium download page are the links to these adapted browsers:UPDATE 2020.12.16: You can download chrome driver from https://chromedriver.chromium.org/downloads
2. The maven pom.xml file
You should create a maven project as we did in the first post of this blog. Let's see the dependencies in the file:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 | <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>ximodante</groupId> <artifactId>HTMLFillForms</artifactId> <version>0.0.1-SNAPSHOT</version> <name>HTMLFillForms</name> <description>HTMLFillForms</description> <properties> <cxf.version>3.2.6</cxf.version> <jax.version>2.3.0</jax.version> <lombok.version>1.18.4</lombok.version> <jackson.version>2.9.6</jackson.version> <h2.version>1.4.196</h2.version> <hibernate.version>5.2.16.Final</hibernate.version> <failOnMissingWebXml>false</failOnMissingWebXml> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- Java version--> <java.version>10</java.version> </properties> <dependencies> <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> <scope>provided</scope> </dependency> <!-- Simulate a browser to fill forms !!! --> <!-- Seleniun --> <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.141.59</version> </dependency> <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-server --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-server</artifactId> <version>3.141.59</version> </dependency> <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-firefox-driver --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-firefox-driver</artifactId> <version>3.141.59</version> </dependency> <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-chrome-driver --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-chrome-driver</artifactId> <version>3.141.59</version> </dependency> <!-- JPA --> <!-- MS-SQL Server JDBC JTDS bo de 2013--> <!-- https://mvnrepository.com/artifact/net.sourceforge.jtds/jtds --> <dependency> <groupId>net.sourceforge.jtds</groupId> <artifactId>jtds</artifactId> <version>1.3.1</version> </dependency> <!-- JPA 2.1 Provider --> <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency> <!-- END JPA --> <!--BEGIN Java 9 references to JEE not included in JDK9--> <!-- see http://openjdk.java.net/jeps/320--> <!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl --> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>${jax.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-core --> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-core</artifactId> <version>${jax.version}</version> </dependency> <dependency> <groupId>com.sun.activation</groupId> <artifactId>javax.activation</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>com.sun.xml.ws</groupId> <artifactId>jaxws-ri</artifactId> <version>${jax.version}</version> <type>pom</type> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-ri</artifactId> <version>${jax.version}</version> <type>pom</type> </dependency> <!-- End of Dependencies required for JAVA 9!!!! --> </dependencies> <!-- COMPILER PLUGIN --> <!-- This is OK http://crunchify.com/how-to-create-build-java-project-including-all-dependencies-using-maven-maven-resources-maven-dependency-maven-jar-plugin-tutorial/ --> <build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <!-- release>10</release --> <source>10</source> <target>10</target> <showWarnings>true</showWarnings> <showDeprecation>true</showDeprecation> </configuration> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.1.0</version> <executions> <execution> <id>copy-resources</id> <phase>validate</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${basedir}/target/MyFolder</outputDirectory> <resources> <resource> <directory>resources</directory> <filtering>true</filtering> </resource> </resources> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.1.1</version> <executions> <execution> <id>copy-dependencies</id> <phase>prepare-package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/MyFolder/lib</outputDirectory> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>false</overWriteSnapshots> <overWriteIfNewer>true</overWriteIfNewer> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.1.0</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>u.request.MyExecutableClass</mainClass> </manifest> <manifestEntries> <Class-Path>.</Class-Path> </manifestEntries> </archive> <finalName>MyFolder/MyJars</finalName> </configuration> </plugin> </plugins> </build> </project> |
Lines 40 to 66 indicates the selenium dependencies (server, java and optionally chrome and firefox).
Lines 27 to 33 show Lombok dependency
Lines 71 to 90 show JPA dependencies (For MS-SQL server and Hibernate)
Lines 92 to 130 add XML dependencies and other stuff not included in Java 9 and newer versions.
Lines 134 and next uses a compiler plugin for Java10
REMARKS: I have used Java 10. If you are using other Java version, you should arrange all the lines that make reference to Java version 10 !!!
3. A simple class
This class :
- Opens a Chrome browser
- Fills user and password
- Submits the form.
- Closes the browser
You must know the route you installed the adapted browser!! In my case it is in "/home/ximodante/Selenium/chromedriver"
String chromeDriverPath = "/home/ximodante/Selenium/chromedriver" ; System.setProperty("webdriver.chrome.driver", chromeDriverPath);
Xpath (version 1.0 !! that is very limited compared with version 2) is used in Chrome to find the component to fill, and the sendKeys() method is used to fill the form. To press a button, the click() method is used.
Here is the code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | package u.requests; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; /** * @see https://www.edureka.co/blog/selenium-installation/ * @author ximo dante * */ public class SeleniumTest { public static void main(String[] args) { //1. Get WebDriver String chromeDriverPath = "/home/eduard/Selenium/chromedriver" ; System.setProperty("webdriver.chrome.driver", chromeDriverPath); ChromeOptions options = new ChromeOptions(); //options.addArguments("--headless", "--disable-gpu", "--window-size=1920,1200","--ignore-certificate-errors", "--silent"); WebDriver driver = new ChromeDriver(options); driver.get("https://contrataciondelestado.es/wps/portal/organismosPublicos"); driver.findElement(By.xpath("//input[contains (@id, 'input_userID')]")).sendKeys("myUser"); driver.findElement(By.xpath("//input[contains (@id,'input_password')]")).sendKeys("myPassword"); driver.findElement(By.xpath("//input[contains (@name, '_login')]")).click(); System.out.println(driver.getPageSource()); driver.close(); } } |
Happy coding
No hay comentarios:
Publicar un comentario