使用java Selenium WebDriver单击框架内的动态div元素

时间:2014-12-04 07:24:57

标签: javascript selenium webdriver displaytag

我必须点击一个仪表板,在点击菜单项后显示它。菜单项和仪表板都在不同的框架中。

<html>
   <head>
   <frameset scrolling="no" framespacing="0" marginwidth="0" marginheight="0"     border="0" frameborder="0" rows="98,*">
         <frame scrolling="no" noresize="" marginwidth="0" marginheight="0" src="menu.jsp" name="menu">
          <script language="JavaScript">
          <script type="text/javascript" src="menu7_com.js" language="JavaScript">
              <div style="position: absolute; display: block; background-color: black; width: 1080px; height: 18px; z-index: 1101; top: 72px; left: 10px;">
              <div style="position: absolute; overflow: hidden; cursor: default; color: rgb(0, 0, 0); font-family: Arial;font-size: 9pt; font-weight: bold; font-style: normal; background-color: rgb(224, 224, 224); text-align:left; width: 110px; height: 16px; padding-left: 10px; padding-top: 2px; left: 0px; top: 0px;">
              <div style="position: absolute; overflow: hidden; cursor: default; color: rgb(0, 0, 0); font-family: Arial;           font-size: 9pt; font-weight: bold; font-style: normal; background-color: rgb(224, 224, 224); text-align:            left; width: 110px; height: 16px; padding-left: 10px; padding-top: 2px; left: 120px; top: 0px;">
    </div>      
        <frame scrolling="auto" style="scrollbar-base-color:blue;" noresize="" marginwidth="0" marginheight="0" src="Dashboard.do?action=DashBoard" name="display">
         <div style="position: absolute; overflow: hidden; cursor: default; color: rgb(0, 0, 0); font-family: Arial;            font-size: 9pt; font-weight: bold; font-style: normal; background-color: rgb(224, 224, 224); text-align:left; width: 110px; height: 16px; padding-left: 10px; padding-top: 2px; left: 120px; top: 0px;">
     </div>
   </frameset>
</html>

2 个答案:

答案 0 :(得分:0)

正如您所提到的那样,只有在点击“父Div标签”后才能看到它。 因此,您必须先将鼠标移动到其父Div元素,然后单击它的子元素。 您可以使用Action类移动到父元素,然后单击其子元素。 我已经包含了正确的Child Div标签Xpath,就像你可以获得其父Div标签的Xpath一样。

下面是相同的例子。

        WebElement Parent_tag= driver.findElement(By.xpath("Xpath of Parent Div Tag"));
        WebElement Child_tag= driver.findElement(By.xpath("//div(contains(text(),'Create Hierarchy'))"));
        Actions action = new Actions(driver);
        action.moveToElement(Parent_tag).click(Child_tag).perform();

答案 1 :(得分:0)

抱歉,我的问题有点不对劲。实际上div是在不同的框架中。但我找到了解决方案。

driver.switchTo().frame("menu");
WebElement MenuOne = driver.findElement(By.xpath("html/body/div[1]/div[1]"));
MenuOne.click();
driver.switchTo().defaultContent();
driver.switchTo().frame("display");
WebElement Createborrower = driver.findElement(By.xpath("html/body/div[5]/div[3]"));
Createborrower.click();