Selenium webdriver 无法按id选择元素

Selenium webdriver 无法按id选择元素,selenium-webdriver,Selenium Webdriver,我已经编写了一个代码来按id选择一个元素,但它没有得到select。我想我的身份每次都在变 我写的代码 Select Employmenttype = new Select(driver.findElement(By.id("ApplicantCurrentEmploymentAndIncomes_9341d691-b0c9-4d78-aa32-6b68150c42c9__EmploymentType"))); Employmenttype.selectByValue("10");

我已经编写了一个代码来按id选择一个元素,但它没有得到select。我想我的身份每次都在变

我写的代码

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>
-选择-
第二次换了身份证

<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>
-选择-

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

您有一个动态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

我尝试了您的代码,效果很好。您能告诉我如何使用类似于上述xpath的方式在文本字段中发送文本吗。我尝试了
driver.findElement(By.xpath(“/*[contains(@id,EmploymentStartDate)])).sendKeys(EmpDate)但它不工作。实际上,对于这个就业页面,所有元素的id都在动态变化。您能帮忙吗?对于id部分,您应该检查什么保持稳定(例如,在您的情况下,我认为它是
EmploymentStartDate
)。但是,您id的名称让我认为这是一个日期类型的
输入
,因此可能是打开日历来选择日期,而UI不允许您直接输入值,或者值的格式不正确。