簡體   English   中英

如何使用Selenium WebDriver選擇新的IFrame?

[英]How to select new IFrame using Selenium WebDriver?

我想選擇一個iframe並在“ 正文”中輸入值。 我正在嘗試以下代碼。

HTML代碼:

 <iFrame id="4564654_content_ifr">
     <html>
       <head>
         <body id="tiny">
             <div aria-lable="New Compose body">
                 <br>
             </div>
         </body>
       </head>
      </html>
  </iFrame>

硒代碼:

    driver.switchTo().frame(driver.findElement(By.xpath("//iframe[contains(@id,'content_ifr')]")));
driver.findElement(By.xpath("//*[@id='tiny']/div[1]")).sendKeys("Happy New IFrame");

但是我無法輸入值。

有人可以幫我嗎?

無需發送密鑰,您可以直接設置innerHTML

driver.switchTo().frame(driver.findElement(By.xpath("//iframe[contains(@id,'content_ifr')]")));

WebElement body = driver.findElement(By.cssSelector("body"));
(JavascriptExecutor)driver.executeScript("arguments[0].innerHTML = 'Happy New IFrame'", body);

如果您正在測試諸如TinyMCE之類的WYSIWYG編輯器,請隨時閱讀以下文章:

使用Selenium WebDriver測試所見即所得的編輯器

然后,您可以直接通過編輯器的API設置內容。 已知Firefox中的sendKeys有問題,但對於Chrome或PhantomJS應該沒問題。

嘗試以下方法可能會幫助您。

WebElement sg= driver.findElement(By.xpath("//iframe[@id='4564654_content_ifr']"));
                driver.switchTo().frame(sg);
List<WebElement> iframeElements= driver.findElements(By.tagName("iframe"));
System.out.println("The total number of iframes are " + iframeElements.size());
driver.switchTo().frame(0);
Thread.sleep(3000);
System.out.println("it is on frame1");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM