我有一个类'Registration.java',在其中定义了一个Web元素,如下所示:
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程序在第二个类中显示错误“对象无法解析”。如何在不重新定义的情况下调用这些网络元素?
您可以使用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文件中,您需要调用相应的getter。
Registration registration = new Registration();
WebElement regForm = registration.getRegForm();
使用全局静态变量
您可以在Registration.java中将变量定义为public static:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句