嗨,这是下面的代码:我想要做的是构建一个函数,我只传递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");
答案 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来自动完成。