循环使用硒中的变量

时间:2013-07-17 20:18:30

标签: java selenium selenium-webdriver

我有一个要求,我从一个站点获取文本,然后在循环中使用它,以便它可以继续单击基于该变量的元素。这可以工作,但只循环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

3 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

我认为你的例子中的错误就在这一行:

int vEle= vText.length(); 

以后你的循环是:

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

这意味着youl循环只会发生很多次,因为文本很长。因此,如果文本为Hello,则循环将仅发生5次。

答案 2 :(得分:0)

感谢Santosh和Pavel,

我实际上找到了另一种方法,虽然我会查看你发给我Santosh的代码。但这是我提出的代码,请给我评论这是否是最好的方法。

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