这是图片 --- Beginning Page --- Page After Click on a button - 我是初学者,然后当我使用
时遇到问题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并将id放在那个iframe中 这是我的错误
你能帮帮我吗?!?我真的很生气!!!!等待框架可用30秒后超时: [[FirefoxDriver:WINDOWS上的firefox (fd412e93-d76e-4934-9fa5-a771c836ffe3)] - &gt; id:TB_iframeContent] Build 信息:版本:&#39; 2.53.1&#39;,修订版:&#39; a36b8b1&#39;,时间:&#39; 2016-06-30 17:37:03&#39;系统信息:主持人:&#39; ABCV-VN-01-PC&#39;,ip:&#39; 192.168.3.30&#39;, os.name:&#39; Windows 7&#39;,os.arch:&#39; amd64&#39;,os.version:&#39; 6.1&#39;, java.version:&#39; 1.8.0_51&#39;司机信息: org.openqa.selenium.firefox.FirefoxDriver功能 [{applicationCacheEnabled = true,rotate = false,handlesAlerts = true, databaseEnabled = true,version = 47.0.1,platform = WINDOWS, nativeEvents = false,acceptSslCerts = true,webStorageEnabled = true, locationContextEnabled = true,browserName = firefox, takesScreenshot = true,javascriptEnabled = true, cssSelectorsEnabled = true}]会话ID: fd412e93-d76e-4934-9fa5-a771c836ffe3无法定位元素: {&#34;方法&#34;:&#34; ID&#34;&#34;选择器&#34;:&#34; ctl00_adminMenuCompany&#34;}
谢谢大家的支持。我发现我的firefox驱动程序出错了这个问题。当我尝试使用chrome驱动程序时,它没关系。我想我应该更新到selenium 3.0
答案 0 :(得分: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的按钮并检查页面后在该行上放置一个断点。奇怪的事情正在发生。我不认为您可以发布该页面的链接?