当前位置: 首页 > 知识库问答 >
问题:

如何通过Selenium使用Web驱动程序和C#定位和单击嵌套在多个框架和框架集中的元素

周瀚
2023-03-14

我有下面这样的html页面,我需要在类clslogin中单击Login。

如何遍历以找到登录名。我正在将C#与selenium Webdriver一起使用。

对于XPath(/html/body/div/table/tbody/tr[1]/td[3]/a),我无法控制登录类,总是抛出元素未找到错误。有人能帮我得到准确的xpath吗。

<html>
 <head></head>
 <frameset name="mytestTopFrame" rows="*"......  >
  <frame name="mytestTopsubframe" src="index.html" width="100%"......... >
   <html>
    <head></head>
     <frameset name="mytest" rows="70,20..."......  >
       <frame name="mytestsubframe" src="menu.html" width="100%"......... >
       <html>
        <body class="clsmenu" .......>
         <div align="left">
           <table id="Title" ......>
            <tbody>
             <tr class="toptitle" ...>
              <td class="clicklogin" ....>
               <a class="clslogin" href="linkref">Login </a>
              </td>
             </tr>
            </tbody>
          </table>
         </div>
        </body>
       </html>
      </frame>
    </frameset>
   </html>
  </frame>
 </frameset>
</html>

共有2个答案

哈骞仕
2023-03-14

您需要首先更改为正确的iframe以访问iframe下方的路径。为此,您可以使用驱动程序。SwichtTo()。帧(“您的帧ID”)。如果此解决方案不起作用,在此线程中可能是一个解决方案,该线程使用相同的代码行,但它搜索父节点和子节点

万俟棋
2023-03-14

根据您共享的HTML,单击带有文本的元素作为登录名,您必须引导WebDriverwait两次切换到2个子框架,然后再次定位所需元素,如下所示:

//SwitchTo mytestTopsubframe
new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.FrameToBeAvailableAndSwitchToIt(By.Name("mytestTopsubframe")));
//SwitchTo mytestsubframe
new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.FrameToBeAvailableAndSwitchToIt(By.Name("mytestsubframe")));
//Locate the desired element
new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//a[@class='clslogin' and @href='linkref']"))).Click();

注意:您不必考虑<代码>

 类似资料:
  • 问题内容: 我有如下所示的html页面,我需要在类clslogin中单击Login。 我如何遍历以查找登录名。我正在将C#与Selenium Webdriver一起使用。 使用XPath(/ html / body / div / table / tbody / tr [1] / td [3] / a)时,我无法控制Login类,始终找不到元素抛出错误。谁能帮助我获得确切的xpath。 问题答案:

  • Python 作为一门强大的脚本语言,能够适应快速原型和较大项目的制作,它被广泛用于 web 应用程序的开发中。 Context WSGI Web 服务网关接口 (简称为 "WSGI" ) 是一种在 Web 服务器和 Python Web 应用程序框架之间的标准接口。 通过标准化 Web 服务器和Python web 应用程序框架之间的行为和通信,WSGI 使得编写可移植的的 Python web

  • 我是Selenium web驱动程序的新手,在查找DOM元素时遇到了一些问题。 假设我有一堆<代码> 我的问题是:获取特定后代并单击它的更好方法是什么? 低于我的代码

  • 我们在WebLogic11g下使用JSF2.1+PrimeFaces6.0+PrimeFaces-Extensions6.0.0、mojarra 2.1.7。 单击p:commandButton后,DOM inspector显示对话框已在正文和html标记之外创建,如下一个图像所示: 在正文外部呈现的对话框 如果我们使用相同的代码(没有帧)创建一个新的.xhtml,并单击p:commandButt

  • 问题内容: 我已经开发了一个Spring / JPA应用程序: 服务,存储库和域层即将完成 。 该 所缺的只是层是网络层 。我正在考虑将Playframework 2.0用于Web层,但不确定是否可以 在Playframework 2.0类中注入/使用spring bean 。 这可能吗?如果可以,怎么办? 问题答案: 您可以。已针对Play 2.5.x更新: https://github.com

  • 问题内容: 我正在使用带有嵌套框架的页面,但是无法访问子框架。HTML源代码的简要概述: 我需要访问名为“ mid2”的框架。该框架嵌套在框架集内,而框架集又嵌套在主框架集内。 我尝试了以下代码,但它们确实有效 我是否缺少明显的东西? 我已经检查了此链接,但未阐明我的问题。 谢谢 问题答案: 试试这个: 您遇到的问题是javascript只能与它看到的当前框架一起使用。 在子框架中,因此看不到您是