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

时间:2016-10-11 10:38:38

标签: java selenium iframe selenium-webdriver

这是图片 --- 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

1 个答案:

答案 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的按钮并检查页面后在该行上放置一个断点。奇怪的事情正在发生。我不认为您可以发布该页面的链接?