我编写了一个代码来按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>
在这种情况下,有人可以建议我如何选择元素吗?
答案 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