使用selenium Webdriver在Html中定位框架集内的元素

时间:2013-11-17 21:19:25

标签: html xpath selenium-webdriver frames frameset

我有以下HTML代码

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<frameset id="mainFrameset" bordercolor="#000000" border="2" framespacing="2" frameborder="1" rows="55,*" name="mainFrameset">
<frame scrolling="no" noresize="noresize" marginwidth="0" marginheight="0" src="title.jsp" name="titleFrame">
<frameset id="innerFrameset" framespacing="0" border="0" frameborder="0" cols="20.0%,*" name="innerFrameset">
<frame scrolling="auto" target="mainFrame" noresize="noresize" marginwidth="0" marginheight="0" src="dynamicContents.jsp" name="contentFrame">
<frame scrolling="auto" marginwidth="0" marginheight="0" src="Welcome.jsp" name="mainFrame">
<html>
<head>
<title>retailJava Home</title>
<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
</head>
<frameset id="mainFrameset" bordercolor="#000000" border="0" framespacing="0" frameborder="no" rows="*,*">
<frame scrolling="auto" marginwidth="0" marginheight="0" src="WelcomeMain.jsp" name="welcomeMain">
<html>
<head>
<title>Welcome to retail-j</title>
<link type="text/css" href="/rjBackOffice/stylesheets/maintenance.classic.css" rel="stylesheet">
<base target="_self">
</head>
<body text="#000000" leftmargin="0" topmargin="0">
<div id="WelcomeContainer">
<div id="HeaderLogo">
<div id="WelcomeMessages">
<span id="WelcomeMessage">Welcome to retail-j</span>
<span id="LoginInformation">You are currently logged in as BOB</span>
</div>
</div>
</body>
</html>
</frame>
<frame scrolling="auto" marginwidth="0" marginheight="0" src="SystemManagement/InScreenApplicationAlertViewerServlet" name="alertFrame">
<html>
</frame>
</frameset>
<noframes> <body bgcolor="#FFFFFF" text="#000000" topmargin="0" leftmargin="0"> Sorry your browser does not support framesets. </body> </noframes>
</html>
</frame>
</frameset>
<noframes> <body bgcolor="#FFFFFF" text="#000000" topmargin="0" leftmargin="0"> Sorry your browser does not support framesets. </body> </noframes>
</frameset>
</html>

我正在尝试从上面的html代码中找到id为WelcomeMessage的span元素。我尝试了以下方法来找到

driver.switchTo().frame("welcomeMain");
WebElement element=driver.findElement(By.xpath(".//*[@id='WelcomeMessage']");

请告诉我如何在框架集/框架之间切换[如果是复杂的html与如上所示的复杂框架]并在其中找到元素。

我收到错误“无法找到元素welcomeMain ......”

请提前感谢,请回复此事。

1 个答案:

答案 0 :(得分:0)

这可能是问题,因为您的webdriver控件可能已经在默认框架内,并且您可能需要先将控件从所有框架中取出,然后再将其转移到另一个框架。

使用以下代码检查您是否能够切换到该页面中的所有可用框架,这应该可以正常工作。

    for (WebElement e :driver.findElements(By.tagName("frame")))
    {
        driver.switchTo().defaultContent();
        driver.switchTo().frame(e);

        if(driver.findElement(By.xpath("yourElement")).isDisplayed())
        {
            driver.findElement(By.xpath("yourElement")).click();
            break;
        }
        else
            continue;
    }
相关问题