我正在嘗試將定位器所需的所有值存盤在屬性檔案中:
這是屬性檔案:
url=https://www.google.com
value=search
這是我的物件存盤庫類:
public class pageobjects extends helperclass{
public WebDriver driver;
By search = By.xpath("//input[@aria-label='search12()']") //I am trying to insert helpclass method here.
public class pageobjects(Webdriver driver){ //creating constructor
this.driver=driver; }
public WebElement search(){
return driver.findElement(search);
}
}
在這里,我不想在我的物件存盤庫檔案和我的測驗用例檔案中對“搜索”進行硬編碼,因此我嘗試將其存盤在屬性檔案中。我知道通過使用“load()”和“getProperty()”,我可以讀取/加載屬性檔案。
這是我的助手類,由從屬性檔案存盤特定字串值的方法組成:
public helperclass {
public properties prop;
static String search12() {
prop=new Properties();
FileInputStream fis = new FileInputStream(path of property file);
return prop.getProperty("value");
}
}
錯誤:字串 //input[@aria-label='search12()'] 不是有效的 Xpath 運算式。
uj5u.com熱心網友回復:
你為什么不試試這個 - By.xpath("//input[@aria-label=" search12() "]")
uj5u.com熱心網友回復:
你的代碼:
public class pageobjects extends helperclass{
By search = By.xpath("//input[@aria-label='search12()']");
}
By一旦使用或定義元素,就無法對其進行引數化WebElement。您需要在此之前進行引數化。
這里search不是String用動態值代替的。它是一個定位器,一旦定義,您就無法修改定位器值。
您需要撰寫一個自定義方法來處理xPaths如下動態,
public class pageobjects extends helperclass {
public WebDriver driver;
String search = "//input[@aria-label='?12()']";
public class pageobjects(
Webdriver driver){
this.driver=driver;
}
// Read property file and get the field value.
getDynamicElement(search, valueFromPropertFile);
public static WebElement getDynamicElement(String search, String value) {
WebElement element = driver.findElement(By.xpath(search.replace("?", value)));
return element;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/459102.html
下一篇:assertAll布林值串列
