[英]How to concatenate two webelement, iterate it and get the text out of concatenated Xpath
我正在使用 Page 對象模型
我的頁面對象如下:
@FindBy(xpath = "//kendo-grid-list//table/tbody/tr/td[9]//div/p")
List<WebElement> milestoneListSize;
private static final String milestoneEditButton1 = "//uif-checklist-complex-group[";
private static final String milestoneEditButton2 = "]//uif-checklist-table/table/tbody/tr/td[6]//a";
public void clickMilestoneUser(milestoneListSize, String milestoneEditButton1 , String milestoneEditButton2 ) {
String Actual;
int totalsize = milestoneListSize.size();
for (int i = 1; i <= totalsize; i++) {
Actual = driver.findElement(By.xpath(milestoneEditButton1 + i + milestoneEditButton2)).getText();
System.out.println(Actual );
}
}
不知道為什么這段代碼不起作用? 提前感謝您的幫助
您的代碼有幾個問題,但我無法涵蓋所有問題。
您已將里程碑編輯按鈕(1&2) 定義為“私有靜態”字段,這意味着它們可以從此類中的每個方法內部訪問,並且您不需要將它們作為方法參數傳遞。
您可以使用單個字符串模板,而不是使用 2 個單獨的部分來構建定位器:
private static final String XPATH_EDIT_BTN = "//uif-checklist-complex-group[%d]//uif-checklist-table/table/tbody/tr/td[6]//a";
可用於構造定位器:
By.xpath(String.format(XPATH_EDIT_BTN, i))
每次調用 'Actual = ...' 時,都會重新分配 'Actual' 變量的值。 您應該使用 'Actual += ...' 代替,但最好使用 StringBuilder:
StringBuilder buffer = new StringBuilder(); for (int i = 1; i <= totalsize; i++) { By loc = By.xpath(String.format(XPATH_EDIT_BTN, i)); buffer.append(driver.findElement(loc).getText()); } System.out.println(buffer.toString());
如果您想要連接結果,請使用第一個代碼,如果您想要單獨的結果,請使用第二個代碼
@FindBy(xpath = "//kendo-grid-list//table/tbody/tr/td[9]//div/p")
List<WebElement> milestoneListSize;
String milestoneEditButton1 = "//uif-checklist-complex-group[%d]//uif-checklist-table/table/tbody/tr/td[6]//a";
public void clickMilestoneUser(String milestoneEditButton1) {
String actual = "";
int totalsize = milestoneListSize.size();
for (int i = 1; i <= totalsize; i++) {
actual = actual+driver.findElement(By.xpath(String.format(milestoneEditButton1, i))).getText();
}
System.out.println(actual);
}
2:
@FindBy(xpath = "//kendo-grid-list//table/tbody/tr/td[9]//div/p")
List<WebElement> milestoneListSize;
String milestoneEditButton1 = "//uif-checklist-complex-group[%d]//uif-checklist-table/table/tbody/tr/td[6]//a";
public void clickMilestoneUser(String milestoneEditButton1) {
String actual = "";
int totalsize = milestoneListSize.size();
for (int i = 1; i <= totalsize; i++) {
actual = driver.findElement(By.xpath(String.format(milestoneEditButton1, i))).getText();
System.out.println(actual);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.