如果我不知道 Selenium 中的 ID 是什么,如何单击已生成 id 的元素



假设我有一些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>,您可以将其转换为列表,然后针对您想要针对的任何titleOfSelect0。

相关内容

  • 没有找到相关文章

最新更新