我遇到了这个奇怪的问题。从电子商务网站结账时,我会得到一个iframe。我能够用
处理iFramedriver.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>
答案 0 :(得分:1)
切换到默认框架,您可以使用
driver.switchTo().defaultContent();
你最好不要使用这样的定位器,因为div可以随时更换,你的定位器变得无效:&#34; .// * [@ id =&#39; layer_cart&#39;] / DIV [1] / DIV [2] / DIV [4] /一个/跨度&#34;
尝试类似".//*[@title='Continue shopping']"