2014-10-29 66 views
0

問題如何映射元素如下:動態地使用Java和硒

我在與除大量相同標識的頁面項目列表,我分別將它們映射,例如:

@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 void getElementText(){ 
    for(int i = 1; i < 4; i++){field[i].Text...} 
} 

我知道如何做到這一點在Ruby中,而不是在Java中,任何提示?

回答

0

首先創建類似的元素

@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()); 
    } 
} 
+0

不錯!這也適用於我! – Bodao 2014-10-30 09:28:06

0

我想你所描述的這樣一個方法:

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; 
} 
+0

尼斯名單!這適用於我,就像上面的解決方案...謝謝你們! – Bodao 2014-10-30 09:28:31