• [Selenium]当DOM结构里面有iFrame,iFrame里面是html,怎么send keys to 里面的body,怎么用Assert进行验证?


    我在测试的过程中遇到一个这样的问题,我无法通过CssSelector找到iFrame下边的html:

    <div id="mailEditorDiv" style="display: inline-block;">
    <div class="maileditor">
    <div style="height:130px;">
    <div class="divBody">
    <div class="ke-container ke-container-default" style=" 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=" 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("//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("//html/body"));
    		mailTextEl.sendKeys(mailBody);
    		Assert.assertEquals(mailTextEl.getText(), mailBody,"""+mailBody+"" should be displayed in mail body.");
    		driver.switchTo().defaultContent();
    	}
    
  • 相关阅读:
    DQL-联合查询
    DQL-分页查询
    DQL-子查询
    DQL-分组查询
    DQL-常见的函数
    DQL-排序查询
    DQL-条件查询
    前端底层-js介绍
    HTML8
    HTML7
  • 原文地址:https://www.cnblogs.com/MasterMonkInTemple/p/3791134.html
Copyright © 2020-2023  润新知