我正在使用selenium webdriver进行测试,并收到错误消息。我已经设置了Ro.properties文件并将所有定位器放在属性文件中。
以下是我正在使用的代码,有人可以帮助我吗?
public class usePropertiesFile {
private WebDriver driver;
public static Properties prop = new Properties();
public static FileInputStream fip = null;
@BeforeTest
public void setup() throws IOException {
driver =new FirefoxDriver();
driver.get("http://gmail.com/");
driver.manage().window().maximize();
}
@AfterTest
public void Teardown() {
driver.quit();
}
@Test
public void testPropFile() throws Exception {
fip = new FileInputStream("C:\\Users\\src\\config\\RO.properties");
prop.load(fip);
driver.findElement(By.xpath(prop.getProperty("login_use"))).clear();
driver.findElement(By.xpath(prop.getProperty("login_use"))).sendKeys("userid");
}
}
答案 0 :(得分:1)
我认为您收到Illegal Argument错误,因为您的Ro.Properties文件不存在您在脚本中声明的路径。
首先,将更新的Ro.properties文件复制到执行文件夹路径中(如果它不存在)。然后验证是否正确分配使用的属性。
执行脚本,它应该可以工作。
答案 1 :(得分:0)
在.properties
文件(位于C:\Users\src\config\RO.properties
)上,未设置属性login_use
。
换句话说,测试程序正在查找properties
文件(否则它会抛出未找到文件的异常),但是找不到名称为login_use
的属性。
尝试在prop.load(fip);
之后添加:
System.out.println("Value of 'login_use': "+prop.getProperty("login_use"));
它可能会打印null
。
将此行添加到RO.properties
:
login_use=//input[@name\='Email']
现在应该将//input[@name\='Email']
(而不是null
)作为值(当然,将表达式更改为您想要的值)。