【问题标题】:Same id for 2 dropdown unable to perform actions om 2 one2 个下拉列表的相同 ID 无法执行操作 om 2 one
【发布时间】:2018-05-30 14:16:09
【问题描述】:

在我的代码中,在 2 个不同的页面上有 2 个下拉菜单,它们都有相同的 id “birth-nation”。我可以使用此 id 执行操作,但是当它进入第二个时,它会给我一个错误,即元素不可见。

这是我的代码:

Select dropdown1111111 = new Select(driver.findElement(By.id("birth-nation")));
dropdown1111111.selectByVisibleText("UNITED STATES");


Select dropdown1111111 = new Select(driver.findElement(By.id("birth-nation")));
dropdown1111111.selectByVisibleText("UNITED STATES");

两者的 id 相同,我无法对 2 个下拉菜单执行操作。

HTML 文件如下。 对于 1 个元素:

 <select required="" name="birthNation" id="birth-nation" class="formcontrol input-sm sync valid" data-sync-to-element="#personal-info-view-birth_nation-243202808" aria-invalid="false">

对于 2 个元素:

 <select required="" name="birthNation" id="birth-nation" class="form-control input-sm sync" data-sync-to-element="#personal-info-view-birth_nation-243202809"> 

【问题讨论】:

  • 用相关的html更新问题
  • 如果您查看浏览器的开发者工具(chrome 中的 f12),您是否会在元素选项卡中看到该元素两次?您可以尝试使用相应的 xPath 选择它
  • @SE God 我认为他的意思是相同的下拉菜单出现在两个不同的页面上。
  • 是的,它们都出现在 2 个不同的页面上
  • 对于 1 个元素:

标签: java selenium testing automation


【解决方案1】:

您可以使用下面的 CSS 选择器,因为您的属性的唯一区别在于 #personal-info-view-birth_nation

select[id = "birth-nation"][data-sync-to-element = "#personal-info-view-birth_nation-243202808"]

select[id = "birth-nation"][data-sync-to-element = "#personal-info-view-birth_nation-243202809"]

【讨论】:

  • 你的意思是像 Select dropdown1111111 = new Select(driver.findElement(By.cssSelector("#personal-info-view-birth_nation-243202808")));对吗?
  • 我在回答中给出了 CSS 选择器,你必须使用它。
  • 它现在工作得很好,谢谢好友,但是我必须在其中输入电子邮件地址的电子邮件地址有块,这里是该驱动程序的代码。findElement(By.cssSelector(" select[id = \"email-address\"][data-sync-to-element = \"#personal-info-view-email_address-243202809\"]")).sendKeys("ncl.reservation12345@gmail.com ");
  • @SarveshSingh - 请将此标记为答案并提出新问题。并在此处添加链接
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-14
  • 1970-01-01
  • 2019-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多