我不想一次又一次地写driver.findelement(By.xpath(“”))

时间:2013-08-08 05:48:29

标签: java selenium-webdriver

嗨,这是下面的代码:我想要做的是构建一个函数,我只传递XPath的值,所以我不必一次又一次地写driver.findElement(By.xpath(""))

driver.findElement(By.xpath("//*[@id='lead_source']")).sendKeys("Existing Customer");
driver.findElement(By.xpath("//*[@id='date_closed']")).sendKeys("08/07/2013");
driver.findElement(By.xpath("//*[@id='sales_stage']")).sendKeys("Opportuntiy Qualification");
driver.findElement(By.xpath("//*[@id='opportunity_monthly_volume']")).sendKeys("10895");
driver.findElement(By.xpath("//*[@id='probability']")).sendKeys("90");
driver.findElement(By.xpath("//*[@id='opportunity_sales_rep']")).sendKeys("Sales Rep");
driver.findElement(By.xpath("//*[@id='opportunity_sales_regions']")).sendKeys("Northeast");
driver.findElement(By.xpath("//*[@id='opportunity_current_lab']")).sendKeys("Current lab");
driver.findElement(By.cssSelector(Payermixcss +"opportunity_medicare")).sendKeys("5");

4 个答案:

答案 0 :(得分:3)

最好的方法是使用PageObject模式。你可以这样做:

public class MyFormPageObject {

    public MyFormPageObject enterLeadSource(String value) {
        driver.findElement(By.id("lead_source")).sendKeys(value);
        return this;
    }

    public MyFormPageObject enterDateClosed(String value) {
        driver.findElement(By.id("date_closed")).sendKeys(value);
        return this;
    }

    //...

}

// then in your test code
myFormPO.enterLeadSource("Existing Customer").enter("08/07/2013");

请注意,如果您有标识符,则应使用By.id,因为XPath较慢且并非总是得到WebDriver的所有实现的良好支持。

答案 1 :(得分:0)

将方法提取到上一级并将值作为参数传递

例如:

yourMethod(路径路径){

driver.findElement(By.xpath(路径))

}

答案 2 :(得分:0)

根据您的关注,您可以使用页面对象模型并创建方法并将变量传递给精确方法。我不知道java但我知道和概念

private string variable= "Xpath value" 

将此变量传递给方法,它将与POM交互。在此之前,您应该了解POM。然后你可以很容易地理解这些概念。希望它能帮助你...

答案 3 :(得分:0)

要减少必须编写的代码量,可以使用如下函数:

private WebElement findElementByXpath(String xpath) {
    return driver.findElement(By.xpath(xpath));
}

代码的第一行是:

findElementByXpath("//*[@id='lead_source']").sendKeys("Existing Customer");

它并没有真正减少代码的长度,但在Eclipse IDE中只需要一个CTRL + SPACE来自动完成。