无法找到具有相同ID的Element

时间:2016-04-22 11:19:44

标签: java selenium iframe selenium-webdriver

我在iframe中有两个具有相同属性的元素,..

问题是驱动程序可以单击第一个元素但不能单击第二个元素。

以下是HTML:

第一个:

<div class="textalgncent mergeSteps mgrT12">

                    <a onclick="javascript:return LoadNextStep('2','1');" id="lnkNextStep" title="Next Step" class="BlueBtn mgrRL10" href="javascript:__doPostBack('lnkNextStep','')">NEXT STEP</a>
                    <a onclick="javascript:return Refresh(1);" id="lnkRefresh" title="Refresh" class="BlueBtn mgrRL10" href="javascript:__doPostBack('lnkRefresh','')" style="display: none;">REFRESH</a>
                    <a onclick="javascript:return CancelMergeContact();" id="lnkCancel" title="Cancel" class="DisableBtn mgrRL10" href="javascript:__doPostBack('lnkCancel','')">CANCEL</a>


                </div>

第二个:

<div class="textalgncent mergeSteps mgrT12">

                    <a onclick="javascript:return LoadNextStep('3','2');" id="lnkNextStep" title="Next Step" class="BlueBtn mgrRL10" href="javascript:__doPostBack('lnkNextStep','')">NEXT STEP</a>
                    <a onclick="javascript:return Refresh(2);" id="lnkRefresh" title="Refresh" class="BlueBtn mgrRL10" href="javascript:__doPostBack('lnkRefresh','')" style="display: inline-block;">REFRESH</a>
                    <a onclick="javascript:return CancelMergeContact();" id="lnkCancel" title="Cancel" class="DisableBtn mgrRL10" href="javascript:__doPostBack('lnkCancel','')">CANCEL</a>

                    <a onclick="javascript:return LoadNextStep('1','2');" id="lnkBack" title="Back" class="BlueBtn" href="javascript:__doPostBack('lnkBack','')">BACK</a>
                </div>

如何让我的驱动程序点击第二个,它们是否在同一帧中并具有相同的属性。

我尝试过的代码: -

driver.switchTo().frame("fbContent");
driver.findElement(By.xpath("//*[@id='ddlDominantId']")).click();
Thread.sleep(2000);
driver.findElement(By.xpath("//*[@id='ddlDominantId']/option[2]")).click();
waitele();
driver.findElement(By.xpath("//*[@id='lnkNextStep']")).click();
Thread.sleep(5000);
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();", driver.findElement(By.xpath("//*[@onclick='lnkNextStep']")));
driver.findElement(By.xpath("//*[@id='lnkNextStep']")).click()

1 个答案:

答案 0 :(得分:0)

嗨,请按以下方式进行操作

注意正在考虑你在i框架内driver.switchTo().frame("fbContent");

现在使用具有相同属性的两个元素非常简单,请按照下面的列表中的常用属性进行操作

 List<WebElement> commonElements = driver.findElements(By.id("lnkNextStep"));
      //Now only for verification purpose check the size 
      // otherwise not required

  System.out.println("Size of the common elements in the ifrmae is : "+commonElements.size());

  // now its very simple two click the second element with same attribute
  commonElements.get(1).click();  // as index of 2nd element will be 1.

希望这能解决您的疑问