NetBeans'ta Java Maven'le Selenium WebDriver Kurulumu
Öncelikle kurulum sürecini basitleştirmek için Maven'i kullanacağız. Maven'e aşina değilseniz, aslında JAR dosyalarını manuel olarak indirip kitaplıklarınıza eklemek zorunda kalmadan proje bağımlılıklarınızı kolayca içe aktarmanıza olanak tanıyan bir paket yöneticisidir. İsterseniz JAR dosyalarını manuel olarak yükleyebilirsiniz; ihtiyacınız olan tüm bağımlılıkları bulmak biraz daha fazla zaman alır.
Yeni Maven Java Uygulama Projesi Oluşturun
Yeni bir Maven projesi oluşturmak için Dosya > Yeni Proje'ye tıklayın ve Maven'i, ardından Java Uygulamasını seçin;
Maven Projesini ve Konumunu Yapılandırma
Daha sonra projeniz için bazı ayrıntıları yapılandırmanız gerekir. Basitlik amacıyla bu projeye HelloSelenium adını vereceğiz. Grup Kimliği alanına girdiğinizde, bunu genellikle birincil alan adınıza tersten ayarlamak istediğiniz paketinizin kurallı adına (com.contradodigital) ayarladığınızı fark edeceksiniz; bu daha sonra Paket adını otomatik olarak dolduracaktır. altta com.contradodigital.helloselenium olacak. Bu, paketlerinizi benzersiz bir referansa sahip olacak şekilde adlandırmak için sektördeki en iyi uygulamadır.
Pom.xml Dosyanızı Açın
Daha sonra bağımlılıklarınızı yönetmek için Maven projelerinde kullanılan pom.xml dosyanızı yapılandırmamız gerekiyor. NetBeans'te bir Maven projesi oluşturduğunuzda, sizin için çok basit bir pom.xml dosyası oluşturulur. Kullanışlı gibi görünüyor ama çok fazla bilgi içermiyor, dolayısıyla Maven'e daha az aşina olanlar için yararlı olmaktan çok kafa karıştırıcı olabilir.
Varsayılan pom.xml dosyasını açtığınızda aşağıdakine benzer görünecektir;
<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>com.mycompany</groupId>
<artifactId>VfsMaven2</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<exec.mainClass>com.mycompany.vfsmaven2.VfsMaven2</exec.mainClass>
</properties>
</project>
Bu iyi bir başlangıç noktası gibi görünüyor ancak ilgili bağımlılıkları kolayca ekleyip bunun çalışmasını sağlamanız için uzun bir yol. Şimdi Maven'i kullanmaya başlamanız için pom.xml dosyanızın nasıl görünmesi gerektiğine bakalım.
Pom.xml Dosyanızı Yapılandırın
Pom.xml dosyanızın nasıl görünmesi gerektiğine geçmeden önce Selenium'u çalışır duruma getirmek için gereken birincil kitaplıkların neler olduğuna bir göz atalım. Oldukça küçük bir sayı var, ancak perde arkasında her zaman açık olmayan pek çok bağımlılık da var.
- Selenyum Java
- Selenyum API'si
- Selenyum Sunucusu
- Selenyum Krom Sürücüsü
- Selenyum Uzaktan Sürücü
- JBirim
Bütün bunlara neden ihtiyaç duyduğunuzu ve farkların neler olduğunu bana sormayın. Selenyum belgeleri o kadar da iyi değil ve işlerin yürümesi için bunlara ihtiyaç duyulmuş gibi görünüyor. Mutlak minimum kitaplık kümesinin ne olduğunu görmek için yukarıdakilerin kombinasyonlarıyla oynamak istiyorsanız, lütfen bulgularınızı aşağıya yorum olarak yazın.
Artık bunu biliyoruz; pom.xml dosyanızda yapılandırmamız gereken birkaç bit var;
- Eklenti Depoları – Varsayılan olarak yapılandırılmış hiçbiri yoktur. Bu yüzden Maven Merkezi Deposunu eklememiz gerekiyor
- Depolar – Yukarıdaki gibi
- Bağımlılıklar – NetBeans ortamınıza doğrudan aktarılabilmesi için 6x proje bağımlılığı eklememiz gerekiyor
Yukarıdakilerin hepsini yapabilmek için pom.xml dosyanızın aşağıdaki gibi görünmesi gerekir;
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.contradodigital</groupId>
<artifactId>HelloSelenium</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
</pluginRepository>
</pluginRepositories>
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<!-- 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-api -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-api</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-chrome-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>3.141.59</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-remote-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
<version>3.141.59</version>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Benim kullandığım pom.xml dosyası
<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>com.mycompany</groupId>
<artifactId>VfsMaven2</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<exec.mainClass>com.mycompany.vfsmaven2.VfsMaven2</exec.mainClass>
</properties>
<dependencies>
<!-- 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-chromium-driver -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chromium-driver</artifactId>
<version>4.20.0</version>
</dependency>
</dependencies>
</project>
Bunu yaptıktan sonra kaydedin. Daha sonra proje adınıza sağ tıklayın ve tüm bağımlılıkları NetBeans projenize çekecek 'Bağımlılıklarla Oluştur'u (Build with Depencies) seçin. Burada başarılı bir derleme mesajı görmelisiniz;
Ayrıca, NetBeans Projenizde şu anda içe aktarılan Bağımlılıkların ve Test Bağımlılıklarının toplam sayısının, içe aktarılan 6 JAR dosyasından önemli ölçüde fazlaya ulaştığını da fark etmelisiniz. Bu, Maven gibi bir paket bağımlılığı yönetim sistemi kullanmanın en büyük faydalarından biridir çünkü işlerin kolaylıkla yürümesine yardımcı olur. Artık manuel olarak içe aktarılan farklı kitaplıkların tümünü bulmanız gerektiğini ve her şeyi senkronize tutmanız gerektiğini hayal edebiliyor musunuz? İşte artık sizin için otomatik olarak içe aktarılanlar;
Maven'i makinenize ilk kez kuruyorsanız, yol boyunca birkaç sorunla karşılaşabileceğinizi unutmayın. Yaygın sorunlardan biri, NetBeans'in hangi durumu bildirdiği bir hatayla ilgilidir;
""cmd" programı çalıştırılamıyor, hatalı biçimlendirilmiş argüman gömülü alıntı içeriyor"
Neyse ki bunu düzeltmek için C:Program FilesNetBeans 8.2etcnetbeans.conf dosyasını düzenlemeniz ve netbeans_default_options içeren satıra bir miktar metin eklemeniz yeterlidir ;
-J-Djdk.lang.Process.allowAmbiguousCommands=true
Böylece satırın tamamı artık okunuyor;
netbeans_default_options=”-J-client -J-Xss2m -J-Xms32m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J- Dsun.java2d.dpiaware=true -J-Dsun.zip.disableMemoryMapping=true -J-Djdk.lang.Process.allowAmbiguousCommands=true”
Bunun neden gerekli olduğunu merak ediyorsanız bu sürüm notunda sorun daha ayrıntılı olarak açıklanmaktadır.
Çalıştırdığınız NetBeans / Java / JDK / Maven vb. sürümüne bağlı olarak bunun gibi tuhaf nüansların olacağını göreceksiniz. Nadiren işler sorunsuz bir şekilde sıralanır. Dolayısıyla, kurulumunuzda biraz farklı sorunlarla karşılaşırsanız, gelecekte başkalarına yardımcı olacak bir çözüm bulduğunuzda lütfen aşağıya bir yorum bırakın.
Kaynaklar