假设我有一些HTML标记:
<select id="select_titleOfSelect-1212_01" name="titleOfSelect-1212"
<option value="ONE"></option>
<option value="TWO"></option>
<option value="THREE"></option>
</select>
这些选择元素中的多个可以动态生成其中CCD_ 1之后的数字可以总是不同的。此外,如果在同一页面上生成多个选择,则"01"将增加1。
我已经能够点击这些使用这个:
.click('select[id^="titleOfSelect-"] option[value='ONE']')
如何单击第2个、第3个,依此类推。如果页面上有多个元素,请选择该元素?
我正在使用带有Selenium 的Javascript
如果ID是随机生成的,则不会根据其ID来搜索元素。您必须使用XPath或CSS选择器才能发挥创意。
以下是我点击选项的方式:
// option 1
driver.findElement(By.xpath("//select/option[@value='ONE']")).click();
// option two
driver.findElement(By.xpath("//select/option[@value='TWO']")).click();
// etc..
或者,如果您不想使用value
,可以使用索引:
// click first option
driver.findElement(By.xpath("//select/option[1]")).click();
// click second option
driver.findElement(By.xpath("//select/option[2]")).click();
// click third option
driver.findElement(By.xpath("//select/option[2]")).click();
如果页面上有多个select
元素,您可以尝试对标题进行contains
查询:
//select[contains(@title, 'titleOfSelect')]/option[1]
您可以使用:nth-of-type()
来选择您得到的SELECT,例如
select:nth-of-type(2) option[value="TWO"]
将在第二个select 中选择包含值"TWO"的OPTION
您可以简单地使用findElements
方法来查找定位器id^="titleOfSelect-"
。这将返回ReadOnlyCollection<IWebElement>
,您可以将其转换为列表,然后针对您想要针对的任何titleOfSelect
0。