如何在不同的父母中选择相同的孩子?

时间:2017-03-18 03:31:30

标签: selenium css-selectors

我有这个HTML代码

  <select  id="from">
    child  
      child
        child 
          <div class="dropdownDiv">
            <ul>
              <li class=""><a href="#"  text="John" value="Jo"> John </a></li>
              <li class=""><a href="#"  text="Mary" value="Ma"> Mary </a></li>
              <li class=""><a href="#"  text="Kevin" value="Ke"> Kevin </a></li>
              <li class=""><a href="#"  text="Sandra" value="Sa"> Sandra </a></li>
              <li class=""><a href="#"  text="Claire" value="Cl"> Claire </a></li>
          </ul>
       </div>
   </select>


   <select  id="to">
      child  
        child
          child 
            <div class="dropdownDiv">
              <ul>
                <li class=""><a href="#"  text="John" value="Jo"> John </a></li>
                <li class=""><a href="#"  text="Mary" value="Ma"> Mary </a></li>
                <li class=""><a href="#"  text="Kevin" value="Ke"> Kevin </a></li>
                <li class=""><a href="#"  text="Sandra" value="Sa"> Sandra </a></li>
                <li class=""><a href="#"  text="Claire" value="Cl"> Claire </a></li>
          </ul>
       </div>
   </select>
     

在Java Selenium中使用CSS_Selector,

  1. 如何从父id="from"
  2. 点击Sandra
  3. 如何点击来自父id="to"的Sandra?
  4. 使用 Xpath ,我可以简单地说

    1. driver.findElement(By.xpath("(//a[@value='Sa'])[1]")).click();
    2. driver.findElement(By.xpath("(//a[@value='Sa'])[2]")).click()
    3. 如何使用CSS选择器执行相同的操作?

1 个答案:

答案 0 :(得分:2)

您的HTML需要更正,因为divul不是<select>的有效子级。 <select>的有效子项为<option><optgroup>

<select  id="from">
    <option value="Jo">John</option>
    <option value="Ma">Mary</option>
    <option value="Ke">Kevin</option>
    <option value="Sa">Sandra</option>
    <option value="Cl">Claire</option>
</select>

<select  id="to">
    <option value="Jo">John</option>
    <option value="Ma">Mary</option>
    <option value="Ke">Kevin</option>
    <option value="Sa">Sandra</option>
    <option value="Cl">Claire</option>
</select>

<强>硒

我建议您查看Selenium的Java documentation

使用更正后的HTML,您可以使用driver.findElement(By.cssSelector("selector here"))来解决问题。该文档是here

以下是使用父id="from"点击Sandra的示例。

driver.findElement(By.cssSelector("#from")).click(); // to show the drop down
driver.findElement(By.cssSelector("#from option[value=Sa]")).click();

您可以修改上面的代码以适用于父id="to"