2015-11-23 58 views
0

我有一個類「Registration.java」在那裏我定義的網絡元素像下面稱之爲由一個階級webelement到另一個類:如何在硒的webdriver

WebElement regForm = driver.findElement(By.xpath("html/body/div[2]/div[1]/div/form")); 
List<WebElement> inputFields = regForm.findElements(By.xpath(".//div[@class='form-con']/input")); 

另一類「Validations.java」 :

List<WebElement> errors = **regForm**.findElements(By.xpath(".//div[@class='error-container']/small")); 
for(int i = 0; i < inputFields.size(); i++){ 
    **inputFields**.get(i).sendKeys(""); 
    driver.findElement(By.xpath(".//div[@class='signin-con']/input")).click(); } 

在上面的例子中,'Registration.java'類有web元素對象'regForm'和'inputFields'。我不想在第二課中再次定義它。所以,這些Web元素想要在另一個類「Validations.java」中使用。但是,Java程序在第二類中顯示錯誤'對象無法解析'。我如何在不重新定義的情況下調用這些webelements?

+0

如果您不想一次又一次地定義,那麼將該變量定義爲靜態不在頂部的main方法.'public static WebElement regform' –

+0

它通過定義公共靜態變量來工作。 – sp238

+0

乾杯:)高興地幫助你.. –

回答

0

您可以使用getter和setter方法或公共靜態變量來解決這個問題

使用吸氣劑

,你可以在Registration.java外商投資企業爲以下變量創建getter和setter方法。

private WebElement regForm; 
private List<WebElement> inputFields; 

public WebElement getRegForm(){ 
    regForm = driver.findElement(By.xpath("html/body/div[2]/div[1]/div/form")); 
    return regForm; 
} 

public List<WebElement> getInputFields(){ 
    inputFields = regForm.findElements(By.xpath(".//div[@class='form-con']/input")); 
} 

而且從Validations.java文件中,您需要調用相應的獲取器。

Registration registration = new Registration(); 
WebElement regForm = registration.getRegForm(); 

使用全局靜態變量

可以在Registration.java定義變量作爲公共靜態:

public static WebElement regForm = driver.findElement(By.xpath("html/body/div[2]/div[1]/div/form")); 
public static List<WebElement> inputFields = regForm.findElements(By.xpath(".//div[@class='form-con']/input")); 

和訪問他們在其他類別爲:

WebElement regForm = Registration.regForm; 

第一個選項是處理這種東西的最好方法。但第二個選項也起作用。 作爲學習過程,我認爲你應該看看Selenium中的頁面對象模式。這會幫助你很多。在tutorialspoint上有一個很好的教程。 http://www.tutorialspoint.com/selenium/selenium_page_object_model.htm

+0

這兩種方法的工作很多。建議使用頁面對象。我也會遵循它。 – sp238

+0

使用公共靜態變量,錯誤得到解決。但是當運行引發NullPointerException的程序時。第二課中顯示錯誤。我認爲webElement具有空值。我的問題是,我們指的是第一個價值。這怎麼可能是空值? – sp238

+0

請發佈代碼,您在哪裏得到例外 – debugger89