无法在新窗口中单击“结帐”按钮

时间:2017-06-01 12:31:17

标签: java selenium iframe

我遇到了这个奇怪的问题。从电子商务网站结账时,我会得到一个iframe。我能够用

处理iFrame
driver.switchTo().frame(0);

在那个iframe之后,还有另一个窗口出现。它不是iFrame。我试过窗户把手,但到目前为止还没有工作。似乎无法点击结帐按钮。

String parentWindowHandler = driver.getWindowHandle(); 
String subWindowHandler = null;

Set<String> handles = driver.getWindowHandles();
Iterator<String> iterator = handles.iterator();
while (iterator.hasNext()){
    subWindowHandler = iterator.next();
    driver.switchTo().window(subWindowHandler); 
    driver.findElement(By.xpath(".//*[@id='layer_cart']/div[1]/div[2]/div[4]/a/span")).click();

}

driver.switchTo().window(parentWindowHandler); 

这是HTML代码,希望它有所帮助:

<div class="button-container">
<span class="continue btn btn-default button exclusive-medium" title="Continue shopping">
**<a class="btn btn-default button button-medium" href="http://website.com/index.php?controller=order" title="Proceed to checkout" rel="nofollow">
<span>
Proceed to checkout
<i class="icon-chevron-right right"></i>
</span>
</a>**
</div>

1 个答案:

答案 0 :(得分:1)

切换到默认框架,您可以使用

driver.switchTo().defaultContent();

你最好不要使用这样的定位器,因为div可以随时更换,你的定位器变得无效:&#34; .// * [@ id =&#39; layer_cart&#39;] / DIV [1] / DIV [2] / DIV [4] /一个/跨度&#34;

尝试类似".//*[@title='Continue shopping']"

的内容