无法按ID选择元素

时间:2016-08-11 16:02:18

标签: selenium-webdriver

我编写了一个代码来按ID选择一个元素,但它没有得到选择。我认为id每次都在变化。

我编写的代码

Select Employmenttype = new Select(driver.findElement(By.id("ApplicantCurrentEmploymentAndIncomes_9341d691-b0c9-4d78-aa32-6b68150c42c9__EmploymentType")));     
Employmenttype.selectByValue("10");

第一次HTML代码

<select name="ApplicantCurrentEmploymentAndIncomes[9341d691-b0c9-4d78-aa32-6b68150c42c9].EmploymentType" class="DropDownEmploymentType" id="ApplicantCurrentEmploymentAndIncomes_9341d691-b0c9-4d78-aa32-6b68150c42c9__EmploymentType" style="border: 1px solid rgb(255, 0, 0); border-image: none;" jQuery18305642460436448337="196"><option value="" selected="">- Select -</option>

ID第二次更改

<select name="ApplicantCurrentEmploymentAndIncomes[48770411-31e6-4f7f-bff6-08e9ed853194].EmploymentType" class="DropDownEmploymentType" id="ApplicantCurrentEmploymentAndIncomes_48770411-31e6-4f7f-bff6-08e9ed853194__EmploymentType" style="border: 1px solid rgb(255, 0, 0); border-image: none;" jQuery18305642460436448337="196"><option value="" selected="">- Select -</option>

在这种情况下,有人可以建议我如何选择元素吗?

1 个答案:

答案 0 :(得分:2)

您有动态ID。您应该使用xpath找到您的元素,因此以下代码应该可以解决这个问题:

Select Employmenttype = new Select(driver.findElement(By.xpath(".//select[contains(@id,ApplicantCurrentEmploymentAndIncomes)]")));     
Employmenttype.selectByValue("10");

这样,您“告诉”驱动程序在您的html中找到Select标记节点,id包含该特定文本。

编辑:在此处添加此项以提高可见性。 如果习惯了它的全部潜力,Xpath是一个非常强大的工具。您可以在此处查看更多示例:w3schools.com/xsl/xsl_functions.asp