我无法在iframe窗口上执行操作

时间:2015-07-22 11:32:15

标签: java iframe selenium-webdriver

以下是该网站,     http://www.mortgagecalculator.org/

点击获取今日最优惠房价&你会得到一个弹出窗口,其中 有框架。选择购买单选按钮,然后点击搜索按钮。

这是我的代码。我无法用我的代码选择单选按钮。需要建议。感谢

syntax.Block.Block()

4 个答案:

答案 0 :(得分:0)

有与iframe相关的浏览器安全性 您无法像访问网页的其他部分一样访问iframe中的元素。

其他人也在努力解决这个问题: Selecting an element in iFrame jQuery

答案 1 :(得分:0)

更改driver.switchTo().frame("brbodxlxcs");以匹配driver.switchTo().frame(driver.findElement(By.tagName("iframe[title='Fill Quote']")));

之类的内容

答案 2 :(得分:0)

您指的是 brbodxlxcs 的框架,看起来这个框架的ID正在动态变化。

试试这个,它为我工作

driver.get("http://www.mortgagecalculator.org/");
driver.findElement(By.xpath(".//*[@id='calc']/form/section/section[2]/div/div/div[1]/div/div/div[3]/div[1]/div[1]/div[4]/a/strong/font")).click();
Thread.sleep(8000);
List<WebElement> frames = driver.findElements(By.cssSelector("iframe"));
System.out.println(frames.size());
Iterator<WebElement> it = frames.iterator();
while(it.hasNext())
{
      WebElement temp = it.next();
      System.out.println(temp.getAttribute("id"));
 }

这给了我所有可用的帧,在这种情况下是5。 然后我尝试了逐个可用的不同帧。

终于让这个工作了
driver.switchTo().frame(2);

我也修改了

之类的单选按钮的xpath
 .//*[@id='brTabbedRateTable']//form[@name='mtgSearchForm']//input[@name='loantype' and @value='purchase']

&安培;像这样的搜索按钮,

.//*[@id='brTabbedRateTable']//form[@name='mtgSearchForm']//a[text()='Search' and @class='br-submit']

我希望它有所帮助!!

答案 3 :(得分:0)

看起来你遇到的问题是iFrame id是动态的,每次呈现页面时都是不同的。页面上有两个iFrame,因此请使用类似下面的xpath来查找特定实例:

(//iframe)[2]