0

嗨,这是下面的代码: 我想要做的是构建一个函数,在其中我只传递 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

4 回答 4

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.

于 2013-08-08T07:49:53.963 回答
0

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

例如:

你的方法(路径路径){

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

}

于 2013-08-08T05:53:34.580 回答
0

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

private string variable= "Xpath value" 

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

于 2013-08-08T06:29:15.683 回答
0

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

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

您的代码的第一行是:

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

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

于 2013-08-09T12:45:47.687 回答