2013-07-17 40 views
0

我有一個要求,我從站點獲取文本,然後在循環中使用它,以便它可以繼續單擊基於該變量的元素。這個工作,但只循環5次,它應該點擊的次數是100和以上。這裏是代碼通過在硒中使用變量循環使用

String vText= driver.findElement(By.xpath(")).getText(); 
System.out.println(vText); 
int vEle= vText.length(); 
for (int i=0; i<vEle; i++){ 
    driver.findElement(By.xpath("")).click(); 

我在做什麼錯了,請幫我出

謝謝, Mediha樣本

+0

你能澄清你在問什麼嗎?很難說出你在尋找什麼樣的答案。 – djangofan

+0

你只是循環它直到文本的長度。所以我相信這個長度只有5分鐘後結束。 – LINGS

+0

你在你的代碼中有語法錯誤'String vText = driver.findElement(By.xpath(「))。getText();'沒有關閉引用,也很高興看到'vText'的內容是什麼, – AndyPerfect

回答

2

您可能需要驗證從那裏你正在服用文100次定位器。如果它對所有100個元素都是相同的,它就會工作。

您是否嘗試過使用findElements方法?

//It will return the List of webelements which has same locator 
List<WebElement> elements=driver.findElements(By.xpath("")); 

//Now iterate through List and do the required operation with each individual element 
for(WebElement ele:element) 
{ 
    ele.getText(); //It will print innertext of each element 
    ele.click();  //It will click on each element 
} 
+0

謝謝Santosh, – Madi

+0

@Madi這種模式幾乎總是最可靠的,如果你正試圖在DOM中定位一些具有相似位置的元素,如果需要的話,你可以使用相對xpaths來使它成爲一個更強大的模式。 –

0

我認爲在你的榜樣的錯誤是在這一行:

int vEle= vText.length(); 

,後來你的循環是:

for (int i=0; i<vEle; i++){ 

這意味着烈循環會只發生多次,因爲文本很長。所以如果文本是Hello那麼循環將只發生5次。

0

感謝桑托斯和Pavel,

我居然找到另一種方法,雖然我會期待你送我桑托斯的代碼。但是這裏是我提出的代碼,請給我評論這是否是最好的方法。

String vText driver.findElement(By.xpath("")).getText(); 

//This will split the output from the slash and the output looks like 1/120 
final String[] splitted = vText.split("\\D+"); 

//Here it will parse that output to an integer type and start with the first location 
final int slideCount = Integer.parseInt(splitted[1]); 

for (int i=0; i<slideCount; i++) { 
    driver.findElement(By.xpath("")).click(); 
} 
+1

我相當確定,如果你在你原來的問題中說過'vText '預計會出現'1/120',並且你希望循環次數爲「/」後面的數字,你會得到更簡潔的答案,更快。 –

+0

很難知道它是否是最好的方法,而沒有看到您正在嘗試查找元素的html。 –