java.lang.IllegalArgumentException:当XPath表达式为null时,找不到元素

时间:2013-04-27 23:17:50

标签: selenium webdriver

我正在使用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");
    }
}

2 个答案:

答案 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)作为值(当然,将表达式更改为您想要的值)。