Я получаю сообщение об ошибке доступа к данным из файла свойств в моем пользовательском интерфейсе selenium: как это можно решить?
org.openqa.selenium.WebDriverException: unknown error: keys should be a string.
У меня есть следующие рамки. Я сделал это для себя для легкости, похоже, усложняю себя. Если есть хорошие идеи, чтобы улучшить его, пожалуйста, предложите
Ценю все предложения.
Framework содержит следующее:
1. файл свойств конфигурации
2. класс коммунальных услуг
3. Файл класса определения элементов страницы
4. файл класса многократно используемых функций
5. тестовые занятия
Файл
config.properties
имеет следующее содержимое:
url=http://some.com
Email=someuser
Password=somepassword
Утилиты класса (BrowserCalls
) следующий код:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
public class BrowserCalls {
public WebDriver driver;
public Properties configs = new Properties();
public String pathToProperties = "path to config.properties file";
public void invokeChromeBrowser() throws IOException {
FileInputStream input = new FileInputStream(pathToProperties);
pmsConfigs.load(input);
System.setProperty("webdriver.chrome.driver", configs.getProperty("chromepath"));
driver = new ChromeDriver();
getAndMazimize();
}
private void getAndMazimize(){
driver.get(configs.getProperty("url"));
driver.manage().window().maximize();
}
public void closeChromeBrowser(){
if(driver != null){
driver.close();
}
}
}
Файл класса определения элементов страницы имеет следующий код:
import org.openqa.selenium.By;
public class LoginPageElements {
//Login page elements
public static By element1 = By.xpath("/html/head/link[1]");
public static By username = By.xpath("//*[@id=\"login\"]/input/tr1/td1");
public static By password = By.xpath("//*[@id=\"login\"]/input/tr2/td1");
public static By submitButton = By.xpath("//*[@id=\"login\"]/input/tr3/td2/button");
public static By title = By.xpath("/html/head/title");
}
Классы определения функциональности, вызываемые классами тестовых примеров:
import com.automation.PageElements.LoginPageElements;
import com.automation.ReusableFunctions.BrowserCalls;
public class LoginFeature extends BrowserCalls {
public void userLogin(){
driver.findElement(LoginPageElements.element1);
driver.findElement(LoginPageElements.username).sendKeys(configs.getProperty(Email));
driver.findElement(LoginPageElements.password).sendKeys(configs.getProperty(Password));
driver.findElement(LoginPageElements.submitButton).click();
}
}
Класс теста ниже:
import com.automation.ReusableFunctions.BrowserCalls;
import com.automation.Components.LoginFeature;
import org.testng.annotations.Test;
import java.io.IOException;
public class LoginTestCase1 extends BrowserCalls {
@Test (description = "Verify application login")
public void LoginTest() throws IOException {
LoginFeature login = new LoginFeature();
login.invokeChromeBrowser();
login.userLogin();
login.closeChromeBrowser();
}
}