[Selenium]當DOM結構里面有iFrame,iFrame里面是
系統
2160 0
我在測試的過程中遇到一個這樣的問題,我無法通過CssSelector找到iFrame下邊的html:
<div id="mailEditorDiv" style="display: inline-block;">
<di
v class="maileditor">
<div style="height:130px;">
<div class="divBody">
<div class="ke-container ke-container-default" style="width: 620px;">
<div class="ke-toolbar" style="display:block;" unselectable="on">
<div class="ke-edit" style="display: block; height: 286px;">
<iframe class="ke-edit-iframe" frameborder="0" hidefocus="true" style="width: 100%; height: 286px;">
<html>
<head>
<body class="ke-content">rrrrrrrt</body>
</html>
?后來我發現只能找到iFrame這里,再往后就找不到了。我用過sendKeys to可以將Text發送給body,但是想通過Assert去驗證iFrame的text,無法做到。
?解決辦法:
先將driver切換到iFrame里面去,用來之后再切換回來,此問題就解決了。
public void sendKeysToMailBodyEditBoxAndCheck(String mailBody){
WebElement el = page.getMailBodyEditBox();
el.sendKeys(mailBody);
driver.switchTo().frame(el);
Assert.assertEquals(driver.findElement(By.xpath("http://html/body")).getText(), mailBody,"' "+mailBody+" ' should be displayed in mail body.");
driver.switchTo().defaultContent();
}
?
?在本地像上面那樣調試通過之后,放到Jenkins上面通過Grid模式運行的時候卻報錯了,sendkeys沒有生效。
?改成下面這樣,將 switchTo 提前,sendKeys to //html/body才可以。
public void sendKeysToMailBodyEditBoxAndCheck(String mailBody){
WebElement el = page.getMailBodyEditBox();
driver.switchTo().frame(el);
WebElement mailTextEl = driver.findElement(By.xpath("http://html/body"));
mailTextEl.sendKeys(mailBody);
Assert.assertEquals(mailTextEl.getText(), mailBody,"\""+mailBody+"\" should be displayed in mail body.");
driver.switchTo().defaultContent();
}
?
[Selenium]當DOM結構里面有iFrame,iFrame里面是html,怎么send keys to 里面的body,怎么用Assert進行驗證?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元