如何从搜索返回的元素列表中单击Random元素

时间:2015-05-12 11:25:23

标签: java selenium webdriver

我有显示产品列表的页面,我只需要从列表中单击特定类型的列表,因此将此特定类型保存为“Webelement”。现在,每当我登陆此页面时,我都会检查一个条件并仅点击第一个产品。但是,我的要求是在检查条件后,我需要点击列表中的任何随机产品。看下面的代码。善意的建议。

 driver.findElement(By.linkText("ALL EQUIPMENT")).click();
     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

     List <WebElement> listings = driver.findElements(By.cssSelector("a[href*='/listing?listingid']"));

              for (int i=0; i < listings.size(); i++) {

      WebElement requiredlisting = listings.get(i);
      System.out.println(i);
      requiredlisting.click();
     Thread.sleep(10000);


     getvalue = driver.findElement(By.xpath("//div[7]/span")).getText();
     System.out.println(getvalue);


         driver.findElement(By.xpath("//div[3]/div[2]/input")).click();
         Thread.sleep(10000);
         driver.findElement(By.id("listingQuestion")).click();
        Thread.sleep(10000);
         driver.findElement(By.id("listingQuestion")).sendKeys("Where is the listing located");
            Thread.sleep(10000);             
         driver.findElement(By.name("submitq")).click();
            Thread.sleep(10000);                         
         driver.findElement(By.xpath("//div/div[2]/div[3]/input")).click();
         Thread.sleep(10000);

         driver.findElement(By.id("uname")).click();
         driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
         driver.findElement(By.linkText("Sign Out")).click();

2 个答案:

答案 0 :(得分:0)

您可以使用Random generator类。

   Random rand = new Random();
   string locator = string.Format("//div/div[2]/div[{0}]/input", rand.Next(5)); 
   // Where 5 is the number of the elements in the list
   driver.FindElement(By.Xpath(locator)).Click();

这是C#中的代码,与Java一样,几乎是1比1。另外,如果这不是列表的正确定位器,请更改Xpath定位器。

答案 1 :(得分:0)

因此,由于您的要求是点击任何随机元素,然后不要使用for循环来点击元素。您可以使用 Random 类并使用列表大小初始化其对象,然后单击列表中的任何元素,如下所示:

List <WebElement> listings = driver.findElements(By.cssSelector("a[href*='/listing?listingid']"));
Random r = new Random();
int randomValue = r.nextInt(listings.size()); //Getting a random value that is between 0 and (list's size)-1
listings.get(randomValue).click(); //Clicking on the random item in the list.