如何使用selenium处理iframe内的(X)按钮

时间:2016-11-02 06:17:56

标签: selenium testing selenium-webdriver automated-tests

伙计们,请指导我解决问题。

我可以访问位于iframe的{​​{1}}内的所有字段,我想要关闭div,但我无法访问(X)按钮。

关闭按钮位于iframe之内,iframe之内。

这是我的代码:

从主窗口切换到div

iframe

访问BaseClassOne.driver.switchTo().frame(BaseClassOne.driver.findElement(By.xpath("//*[@id='Dealership quote Internal']/iframe"))); 元素:

iframe

我尝试下面提到的代码来关闭模态弹出窗口:

BaseClassOne.driver.findElement(By.xpath("//*@id='txtDealershipRef']")).sendKeys("XYZ090123");

请指导我。

提前致谢。

enter image description here

2 个答案:

答案 0 :(得分:0)

代码序列似乎存在问题。考虑到iframe中不包含关闭链接,您必须先切换到默认内容,然后在继续之前单击关闭。请尝试以下代码:

//Switch to frame and perform actions
BaseClassOne.driver.switchTo().frame(BaseClassOne.driver.findElement(By.xpath("//*[@id='Dealership quote Internal']/iframe"))); 
BaseClassOne.driver.findElement(By.xpath("//*@id='txtDealershipRef']")).sendKeys("XYZ090123");

//switch to default content (to access elements outside the frame)
BaseClassOne.driver.switchTo().defaultContent(); 

//click on close 
BaseClassOne.driver.findElement(By.xpath("//a[@class='close-window']")).click();

注意:关闭按钮的标识符已在此处的代码中更改为使用HTML中的属性,因为By.tagName("a")这是问题中代码的一部分,可能有许多匹配的节点,这些节点更高在HTML层次结构中。

答案 1 :(得分:0)

根据上述评论和讨论,我觉得你必须切换回默认框架,然后尝试点击关闭按钮。

driver.switchTo()defaultContent();