我正在使用页面对象模型
我的页面对象如下:
@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 );
}
}
不知道为什么这段代码不起作用? 感谢您提前提供帮助
最佳答案
您的代码存在几个问题,但我无法涵盖所有问题。
您已将 MilestoneEditButton(1&2) 定义为“私有(private)静态”字段,这意味着可以从此类中的每个方法内部访问它们,并且不需要将它们作为方法参数传递。
您可以使用单个字符串模板,而不是使用 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());
关于java - 如何连接两个 WebElement、迭代它并从连接的 Xpath 中获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60222742/