使用Selenium Webdriver获取div中的项目列表

Dam*_*men 5 java selenium selenium-webdriver

说我有以下内容

<div class="facetContainerDiv">
    <div>
        <label class="facetLabel">
            <input class="facetCheck" type="checkbox" />
        </label>
        <label class="facetLabel">
            <input class="facetCheck" type="checkbox" />
        </label>
        <label class="facetLabel">
            <input class="facetCheck" type="checkbox" />
        </label>
        <label class="facetLabel">
            <input class="facetCheck" type="checkbox" />
        </label>
        <label class="facetLabel">
            <input class="facetCheck" type="checkbox" />
        </label>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

现在我想根据我提供的索引在复选框上打勾.所以我写了一个像下面这样的方法

如何访问div class ="facetContainerDiv"中的所有元素?

我试过了

List<WebElements> elementsList =  driver.findElements(By.cssSelector(".facetContainerDiv"));
for(WebElement checkBox:elementsList) {
    int i=0;
    checkBox = elementsList.get(i);
     bla bla bla..
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,elementsList只有一个元素,其中"type"为null.

小智 5

请遵循以下与您的案例完全匹配的代码.

  1. 为div下的div创建一个web元素的接口,facetContainerDiv

即为

<div class="facetContainerDiv">
    <div>

    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

2.创建一个包含第二个div内所有元素的IList,即:

<label class="facetLabel">
   <input class="facetCheck" type="checkbox" />
</label>
<label class="facetLabel">
   <input class="facetCheck" type="checkbox" />
</label>
<label class="facetLabel">
   <input class="facetCheck" type="checkbox" />
</label>
<label class="facetLabel">
   <input class="facetCheck" type="checkbox" />
</label>
<label class="facetLabel">
   <input class="facetCheck" type="checkbox" />
</label>
Run Code Online (Sandbox Code Playgroud)

3.使用索引访问每个复选框

请在下面找到代码

using System;
using System.Collections.Generic;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Support.UI;

namespace SeleniumTests
{
  class ChechBoxClickWthIndex
    {
        static void Main(string[] args)
        {

            IWebDriver driver = new FirefoxDriver();

            driver.Navigate().GoToUrl("file:///C:/Users/chery/Desktop/CheckBox.html");

            // Create an interface WebElement of the div under div with **class as facetContainerDiv**
            IWebElement WebElement =    driver.FindElement(By.XPath("//div[@class='facetContainerDiv']/div"));
            // Create an IList and intialize it with all the elements of div under div with **class as facetContainerDiv**
            IList<IWebElement> AllCheckBoxes = WebElement.FindElements(By.XPath("//label/input"));
            int RowCount = AllCheckBoxes.Count;
            for (int i = 0; i < RowCount; i++)
            {
            // Check the check boxes based on index
               AllCheckBoxes[i].Click();

            }
            Console.WriteLine(RowCount);
            Console.ReadLine(); 

        }
    }
}
Run Code Online (Sandbox Code Playgroud)