2016-03-18 7 views
0

klasöründe saklanan "Object.Properties" dosyasından okuyamıyor Sellibum Web Sürücüsü ve Java'yı Eclipse'de kullanıyorum ve okumaya çalışıyorum Paket klasörü altındaki src klasöründe saklanan "Object.Properties" dosyasından xpath/Class id/link kimliği ve test verilerini veritabanından doldurun. Ancak, özellik dosya komut dosyasını takip eden 2. özellik okunduktan sonra Email, Pwd ve Submit için özellik okunmuyor. Script'in bu özelliği neden okumadığını anlayamıyorum.Selenium Web Sürücüsü Java kodları, xpath/Class id/link kimliğini, klasör klasöründe

Komut dosyanız paket klasörü altındaki src klasöründe saklanan "Object.Properties" dosyasından xpath/Class id/link kimliğini kullanarak web alanı, düğme, bağlantıyı belirleyecektir. Ve web sayfası için alan komut dosyası, test verilerini veritabanından getirecek ve bunları web sayfasındaki belirli bir alana yerleştirecektir. özelliği ardından

"Object.Properties" dosyasında saklanır ve bu özellik dosya paketi klasörünün altındaki src klasöründe depolanır: Burada

org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//input[@name='username']"} 
Command duration or timeout: 12 milliseconds 
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html 
Build info: version: '2.52.0', revision: '4c2593c', time: '2016-02-11 19:03:33' 
System info: host: 'CAEITVDI-085', ip: '172.23.212.109', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_66' 
Driver info: org.openqa.selenium.firefox.FirefoxDriver 
Capabilities [{applicationCacheEnabled=true, rotatable=false, handlesAlerts=true, databaseEnabled=true, version=41.0.1, platform=WINDOWS, nativeEvents=false, acceptSslCerts=true, webStorageEnabled=true, locationContextEnabled=true, browserName=firefox, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}] 
Session ID: d0672bd2-d9d0-413e-a734-1865a9cce733 
*** Element info: {Using=xpath, value=//input[@name='username']} 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206) 
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158) 
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:678) 
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:363) 
    at org.openqa.selenium.remote.RemoteWebDriver.findElementByXPath(RemoteWebDriver.java:500) 
    at org.openqa.selenium.By$ByXPath.findElement(By.java:361) 
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:355) 
    at com.provider.ProApp.testUserNamePassword(ProApp.java:76) 
    at com.provider.ProApp.setUpConnection(ProApp.java:42) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85) 
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:639) 
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:816) 
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1124) 
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125) 
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108) 
    at org.testng.TestRunner.privateRun(TestRunner.java:774) 
    at org.testng.TestRunner.run(TestRunner.java:624) 
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:359) 
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354) 
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312) 
    at org.testng.SuiteRunner.run(SuiteRunner.java:261) 
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1215) 
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1140) 
    at org.testng.TestNG.run(TestNG.java:1048) 
    at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:112) 
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:205) 
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:176) 
Caused by: org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//input[@name='username']"} 
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html 
Build info: version: '2.52.0', revision: '4c2593c', time: '2016-02-11 19:03:33' 
System info: host: 'CAEITVDI-085', ip: '172.23.212.109', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_66' 
Driver info: driver.version: unknown 
    at <anonymous class>.FirefoxDriver.prototype.findElementInternal_(file:///C:/Users/SAV19734/AppData/Local/Temp/anonymous6689352326673970234webdriver-profile/extensions/[email protected]/components/driver-component.js:10723) 
    at <anonymous class>.FirefoxDriver.prototype.findElement(file:///C:/Users/SAV19734/AppData/Local/Temp/anonymous6689352326673970234webdriver-profile/extensions/[email protected]/components/driver-component.js:10732) 
    at <anonymous class>.DelayedCommand.prototype.executeInternal_/h(file:///C:/Users/SAV19734/AppData/Local/Temp/anonymous6689352326673970234webdriver-profile/extensions/[email protected]/components/command-processor.js:12614) 
    at <anonymous class>.DelayedCommand.prototype.executeInternal_(file:///C:/Users/SAV19734/AppData/Local/Temp/anonymous6689352326673970234webdriver-profile/extensions/[email protected]/components/command-processor.js:12619) 
    at <anonymous class>.DelayedCommand.prototype.execute/<(file:///C:/Users/SAV19734/AppData/Local/Temp/anonymous6689352326673970234webdriver-profile/extensions/[email protected]/components/command-processor.js:12561) 

:

URL = http://web.com/user-portal 
ClickOnLoginLink = //*[@id='app']/div/main/section/ul/li[1]/a 
Email = //input[@name='username'] 
Pwd = //input[@name='password'] 
Submit = //button[@name='loginButton'] 

Arıza istisna gösterisinin hemen ardından Benim temel sınıfım Kod:

package com.provider; 

import java.io.FileInputStream; 
import java.io.IOException; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.ResultSetMetaData; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.ArrayList; 
import java.util.Properties; 
import oracle.net.ns.NetException; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.testng.annotations.BeforeSuite; 


public class BaseClass { 

    static WebDriver driver; 

    @BeforeSuite 
    public void setup() throws InterruptedException, IOException{ 

     driver=new FirefoxDriver(); 

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


     Properties obj = new Properties(); 

     FileInputStream objfile = new FileInputStream(System.getProperty("user.dir") +"\\src\\com\\provider\\Object.Properties"); 
     obj.load(objfile); 

     driver.get(obj.getProperty("URL")); 
    } 

} 

Benim genişletilmiş sınıf Cod'um E: Aslında

package com.provider; 

import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.Properties; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebElement; 
import org.testng.Assert; 
import org.testng.annotations.Test; 



public class ProApp extends BaseClass{ 



@Test 
    public void setUpConnection() throws ClassNotFoundException, SQLException, FileNotFoundException, InterruptedException, IOException { 

     String driver_DBPath = "jdbc:oracle:thin:@Host:Port:SID"; 
     String DB_username = "*****"; 
     String DB_password = "*****"; 
    String Query = "select * from Table"; 
    Connection con = DriverManager.getConnection(driver_DBPath, DB_username, DB_password); 
    Statement stmt = con.createStatement(); 
    ResultSet rs = stmt.executeQuery(Query); 


    while(rs.next()){ 

     String Email = rs.getString("CLAIM_NUMBER"); 
     String Pwd = rs.getString("INDIVIDUAL_NUM"); 

     testUserNamePassword(Email, Pwd); 
    } 

    } 

    @Test(priority=1) 
    public void clickLoginLink() throws InterruptedException, IOException { 

    Properties obj = new Properties(); 

    FileInputStream objfile = new FileInputStream(System.getProperty("user.dir") +"\\src\\com\\provider\\Object.Properties"); 
    obj.load(objfile); 


    Thread.sleep(1000); 
    driver.findElement(By.xpath(obj.getProperty("ClickOnLoginLink"))).click(); 
    Thread.sleep(1000); 

    } 

    @Test(priority=2) 
    public void testUserNamePassword(String Email1, String Pwd1) throws InterruptedException, IOException { 

    Thread.sleep(1000); 
    Properties obj = new Properties(); 

    FileInputStream objfile = new FileInputStream(System.getProperty("user.dir") +"\\src\\com\\provider\\Object.Properties"); 
    obj.load(objfile); 

    Thread.sleep(1000); 
    driver.findElement(By.xpath(obj.getProperty("Email"))).clear(); 
    Thread.sleep(1000); 
    driver.findElement(By.xpath(obj.getProperty("Email"))).sendKeys(Email1); 
    Thread.sleep(1000); 
    driver.findElement(By.xpath(obj.getProperty("Pwd"))).clear(); 
    Thread.sleep(1000); 
    driver.findElement(By.xpath(obj.getProperty("Pwd"))).sendKeys(Pwd1); 
    Thread.sleep(1000); 
    driver.findElement(By.xpath(obj.getProperty("Submit"))).click(); 
    Thread.sleep(1000); 

    } 

    @Test(priority=3) 
    public void loginVerify() throws InterruptedException, IOException{ 

     Properties obj = new Properties(); 

     FileInputStream objfile = new FileInputStream(System.getProperty("user.dir") +"\\src\\com\\provider\\Object.Properties"); 
     obj.load(objfile); 

     Assert.assertEquals("Wel Come To Testing World!!!", driver.findElement(By.xpath(obj.getProperty("WelComeToTestingWorld"))).getText()); 

    }  

    @Test(priority=4) 
    public void logonVerify() throws InterruptedException, IOException{ 

     Properties obj = new Properties(); 

     FileInputStream objfile = new FileInputStream(System.getProperty("user.dir") +"\\src\\com\\provider\\Object.Properties"); 
     obj.load(objfile); 

     WebElement DashboardHeader = driver.findElement(By.xpath(obj.getProperty("WelComeToTestingWorld"))); 
     DashboardHeader.getText().equals("Wel Come To Testing World!!!"); 

    } 

} 
+0

Konsolda hata mesajı neydi? – gihan

+0

Kaydını istisna olarak güncelledim. Mülk dosyasında sağlanan web öğesini kontrol ettim. Aslında, betik ilk iki web öğesini tanımlayabilir ve E-posta ve Şifre alanına kadar ulaşabilir. Ancak, komut dosyası özellik dosyasında depolanan web öğesini kullanarak E-posta ve Şifre alanını bulamıyor. Genişletilmiş sınıftaki komut dosyasında @Test (priority = 2) notu altında özellik dosyası yolu sağladım. – Curious

+0

, Xpath aracılığıyla web öğesi bulmakta sorun gibi görünüyor. Xpath'larınızın doğru olup olmadığını kontrol edin. Diğer şeyler doğru gibi görünüyor. Bu size yardımcı olacaktır: http://www.seleniumeasy.com/selenium-tutorials/read-data-from-properties-file-using-java-selenium. Xpath öğelerini bulmak için bir araç kullanmayı deneyin. (https://addons.mozilla.org/en-US/firefox/addon/element-locator-for-webdriv/) – gihan

cevap

1

, ben komut dosyası daha sonra çalışırken testi ve senaryo başlangıç ​​yürütümü için komut TestNG çerçevesini takip ediyor böylece veritabanı bağlantı yöntemi bilgileri sağlamış Öncelik vermediği onu anlamaya Test (priority = 1), Test (priority = 2) vb. yürütülmesi ... Ve veritabanı bağlantısı yöntemini başlatmadan önce "Test" sağladığım veritabanı bağlantısı için. Ayrıca veritabanı bağlantı yöntemini Test olarak önceliklendirmeliydim (öncelik = 2). Bu yüzden sadece veritabanı bağlantı yöntemini önceliklendirin sorunumu çöz.

İlgili konular