我有这个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,
id="from"
和id="to"
的Sandra?使用 Xpath ,我可以简单地说
driver.findElement(By.xpath("(//a[@value='Sa'])[1]")).click();
driver.findElement(By.xpath("(//a[@value='Sa'])[2]")).click()
如何使用CSS选择器执行相同的操作?
答案 0 :(得分:2)
您的HTML需要更正,因为div
和ul
不是<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"
。