【问题标题】:How to click on a link in an iFrame in selenium IDE如何在 selenium IDE 中单击 iFrame 中的链接
【发布时间】:2018-05-31 13:27:31
【问题描述】:

你好 Stackoverflow 社区,

我正在使用 selenium IDE,但遇到以下问题: 我必须将 Web 内容管理系统中的 Web 内容从一个文件夹移动到另一个文件夹。因此,我必须单击“选择”按钮来指定目标文件夹,然后打开一个 iframe,我可以在其中浏览文件夹的“树结构”。
原始页面如下所示:
带有“选择”按钮的原始页面

Web内容管理系统的结构如下: 主页

-Test(=Parent Folder):  
        -UniqueTitle  
        -UniqueTitle2  

因为我要寻址的文件夹(UniqueTitle2)位于我当前文件夹的下一层(我在 UniqueTitle),我必须单击父文件夹“TEST”才能返回一层。这是“TEST”文件夹的链接。

你可以在其中选择目标文件夹的 iframe

问题在于,在 iframe 下方的原始页面上,指向“TEST”文件夹的相同链接作为面包屑存在。因此,如果 selenium 点击 href 链接,它实际上点击的是原始页面上的链接,而不是 iframe 中的链接。

我尝试了以下方法: 选择 iframe:

storeAttribute|css=iframe.dialog-iframe-node@id|iframeIDE
selectFrame|id=${iframeID}

点击链接:

clickAndWait|link=TEST

clickAndWait|//a[contains(@href,'https://www.companyname.com/language/projectname/manage/maintenance/web-content-management[...]folderid=465576')]

这是 iframe 的 HTML 片段:

<a href="https://www.companyname.com/language/projectname/manage/maintenance/web-content-management?p_p_id=15&amp;p_p_lifecycle=0&amp;p_p_state=pop_up&amp;p_p_mode=view&amp;_15_struts_action=%2Fjournal%2Fselect_folder&amp;_15_folderId=4655761" data-direction-right="true" data-folder-id="4655761">TEST</a>

如何区分这两者,以便我的脚本将在 iframe 内单击?

提前感谢您,如果您需要更多信息,请告诉我。

【问题讨论】:

  • 您提供的 HTML 是 &lt;a&gt; 标记。你能告诉我们&lt;iframe&gt;标签吗?
  • 嗨,这里是 iframe 标签:&lt;iframe class="dialog-iframe-node " id="_15_selectFolder_iframe_" name="_15_selectFolder_iframe_" src="https://www.companyname.com/language/projectname/manage/maintenance/web-content-management?p_p_id=15&amp;amp;p_p_lifecycle=0&amp;amp;p_p_state=pop_up&amp;amp;p_p_mode=view&amp;amp;_15_struts_action=%2Fjournal%2Fselect_folder&amp;amp;_15_folderId=7190132" style="height: 523px; width: 680px;" frameborder="0"&gt;&lt;/iframe&gt;

标签: html selenium iframe selenium-ide


【解决方案1】:

你有两个选择:

1。不要使用 iframe,而是使用 div 或 section

使用这种方法,您必须将用于文件选择的代码移至主页。使用 AJAX 将文件列表填充到 div。这种方法通常被称为单页应用程序,尽管您不需要将所有内容移动到单页,只需将文件选择代码即可。

2。将 iframe 的 allow-origin 标头设置为您的域名或 *

您应该阅读有关如何设置此 HTTP 标头的信息。 这是一些参考文献

【讨论】:

    【解决方案2】:

    可能与How to switch between frames in Selenium WebDriver using Java 重复

    当你想在 iframe 中做某事时,第一件事就是切换到它。

    WebDriver.SwitchTo().Frame(WebDriver.FindElement(By.Id("iframe")));
    

    之后,您可以单击元素。 当您想返回时,您可以使用:

    WebDriver.SwitchTo().DefaultContent();
    

    【讨论】:

      猜你喜欢
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 2015-05-29
      • 2011-08-06
      • 1970-01-01
      • 2020-07-09
      • 2014-06-10
      • 1970-01-01
      相关资源
      最近更新 更多