如何使用Java和Selenium动态映射元素
问题如下: 我在页面中有一个项目列表,除了一个数字外,其他项目都具有相同的标识符,并且我分别映射它们,例如:如何使用Java和Selenium动态映射元素,java,selenium,selenium-webdriver,testng,Java,Selenium,Selenium Webdriver,Testng,问题如下: 我在页面中有一个项目列表,除了一个数字外,其他项目都具有相同的标识符,并且我分别映射它们,例如: @FindBy(id = "element(1)") public WebElement field1 @FindBy(id = "element(2)") public WebElement field2 @FindBy(id = "element(3)") public WebElement field3 @FindBy(id = "element(4)") public WebEl
@FindBy(id = "element(1)")
public WebElement field1
@FindBy(id = "element(2)")
public WebElement field2
@FindBy(id = "element(3)")
public WebElement field3
@FindBy(id = "element(4)")
public WebElement field4
然后我编写方法来获取每个元素的值
public void getElement1Text(){field1.Text..}
...
理想情况下,我想做的事情如下:
@FindBy(id = "element(VARIABLE)")
public WebElement field
public List getElementText(WebDriver driver){
List elementTextList = new ArrayList();
//this loops 1-3
for(int i = 1; i < 4; i++) {
//add each text by finding the element, notice elemenIdGoesHere should be changed
elementTextList.add(driver.findElement(By.id("elementIdGoesHere" + i)).getText());
}
//return the list of texts
return elementTextList;
}
然后循环输入字段的数量,例如:
public void getElementText(){
for(int i = 1; i < 4; i++){field[i].Text...}
}
public void getElementText(){
对于(inti=1;i<4;i++){field[i].Text…}
}
我知道如何在Ruby而不是Java中实现这一点,有什么提示吗?我想您描述的是这样一种方法:
@FindBy(id = "element(VARIABLE)")
public WebElement field
public List getElementText(WebDriver driver){
List elementTextList = new ArrayList();
//this loops 1-3
for(int i = 1; i < 4; i++) {
//add each text by finding the element, notice elemenIdGoesHere should be changed
elementTextList.add(driver.findElement(By.id("elementIdGoesHere" + i)).getText());
}
//return the list of texts
return elementTextList;
}
公共列表getElementText(WebDriver驱动程序){
List elementTextList=新的ArrayList();
//这个循环1-3
对于(int i=1;i<4;i++){
//通过查找元素添加每个文本,注意ElemenidGoesher应该更改
添加(driver.findElement(By.id(“elementidgoesere”+i)).getText();
}
//返回文本列表
返回元素textlist;
}
首先创建类似元素的列表
@FindBy(xpath = "//*[contains(@id,'(element(')]")
public List<WebElement> fields;
Then read the each values in the similar elements one by one
public void getElementText(){
for (WebElement objElement : fields) {
System.out.println(objElement.getText());
}
}
@FindBy(xpath=“/*[包含(@id'(元素(')])”)
公共列表字段;
然后逐个读取相似元素中的每个值
public void getElementText(){
for(WebElement对象:字段){
System.out.println(objElement.getText());
}
}
Nice!!这对我很有效,就像上面的解决方案一样…谢谢大家!!