繁体   English   中英

Selenium Web驱动程序-无法切换到框架(Java)

[英]Selenium Web Driver - Unable switch to frame (Java)

这是图片 ---起始页--- 单击按钮后的 -我是初学者,那么我在使用时遇到问题

GetDriver()。switchTo()。frame(element)或ExpectedConditions.frameToBeAvailableAndSwitchToIt(element)

这是HTML:

<head id="ctl00_Head1">
<body>
<div id="divPleaseWait" style="display: none"/>
<div>
<a>
<div style="position: absolute; visibility: hidden;">
<div id="TB_overlay" class="TB_overlayBG"/>
<div id="TB_window" style="margin-left: -440px; width: 880px; margin-top: -295px; display: block;">
<div id="TB_title">
<iframe id="TB_iframeContent" frameborder="0" style="width:879px;height:562px;" onload="tb_showIframe()" name="TB_iframeContent303" src="CompanyDetail.aspx?" hspace="0"/>
</div>

我的代码是

WebDriverWait wait = new WebDriverWait(GetDriver(), time_out);
        wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.Id("TB_iframeContent")));

要么

GetDriver().switchTo().frame(By.Id("TB_iframeContent"));

但我无法切换到该iframe,并在该iframe中找到了ID。这是我的错误

等待框架可用30秒后超时:[[Firefox驱动程序:WINDOWS上的Firefox(fd412e93-d76e-4934-9fa5-a771c836ffe3)]-> id:TB_iframeContent]构建信息:版本:'2.53.1',修订版: 'a36b8b1',时间:'2016-06-30 17:37:03'系统信息:主机:'ABCV-VN-01-PC',ip:'192.168.3.30',操作系统名称:'Windows 7', os.arch:'amd64',os.version:'6.1',java.version:'1.8.0_51'驱动程序信息:org.openqa.selenium.firefox.FirefoxDriver功能[{applicationCacheEnabled = true,rotatable = false,handlesAlerts = true,databaseEnabled = true,版本= 47.0.1,平台= WINDOWS,nativeEvents = false,acceptSslCerts = true,webStorageEnabled = true,locationContextEnabled = true,browserName = firefox,takesScreenshot = true,javascriptEnabled = true,cssSelectorsEnabled = true}]会话ID:fd412e93-d76e-4934-9fa5-a771c836ffe3无法找到元素:{“ method”:“ id”,“ selector”:“ ctl00_adminMenuCompany”}

请你帮助我好吗?!? 我真的为此而生气!!!

谢谢大家的支持。 我发现我的firefox驱动程序存在此问题的错误。 当我尝试使用chrome驱动程序时,就可以了。 我认为我应该更新到硒3.0

我的猜测是,也许您要查找的IFRAME嵌套在另一个IFRAME 运行此代码,然后查看列表中是否存在您要查找的IFRAME

driver.findElement(locator).click(); // click the button to make the IFRAME visible
// you may need a wait here
List<WebElement> iframes = driver.findElements(By.tagName("iframe"));
for (WebElement iframe : iframes)
{
    System.out.println(iframe.getAttribute("outerHTML"));
}

编辑:

您是否尝试过使用帧索引? 请尝试以下。

driver.findElement(locator).click(); // click the button to make the IFRAME visible
new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(0));

我建议,如果上述方法不起作用,请在单击显示IFRAME的按钮并检查页面后在行上放置一个断点。 发生了一些奇怪的事情。 我不认为您可以发布页面链接吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM