说我有一些HTML标记,例如:
<select id="select_titleOfSelect-1212_01" name="titleOfSelect-1212"
<option value="ONE"></option>
<option value="TWO"></option>
<option value="THREE"></option>
</select>
多个选择元素可以动态生成
其中titleOfSelect
之后的数字始终可以不同。
如果在同一页面上生成多个选择,则“ 01”也将增加1。
我已经可以使用以下命令单击它们:
.click('select[id^="titleOfSelect-"] option[value='ONE']')
如何单击第二,第三等等。如果页面上有多个元素,请选择页面上的元素?
我在Selenium中使用Javascript
答案 0 :(得分:1)
如果随机生成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]
答案 1 :(得分:0)
您可以使用:nth-of-type()
来选择要获得的选择,例如
select:nth-of-type(2) option[value="TWO"]
将在第二个SELECT中选择包含值“ TWO”的OPTION
答案 2 :(得分:0)
您可以简单地使用findElements
方法来找到定位符id^="titleOfSelect-"
。这将返回ReadOnlyCollection<IWebElement>
,您可以将其转换为列表,然后定位要定位的任何index
。