当前位置: 首页 > 面试题库 >

如何使用Webdriver和C#通过Selenium找到并单击嵌套在多个框架和框架集中的元素

苏季同
2023-03-14
问题内容

我有如下所示的html页面,我需要在类clslogin中单击Login。

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

使用XPath(/ html / body / div / table / tbody / tr [1] / td [3] /
a)时,我无法控制Login类,始终找不到元素抛出错误。谁能帮助我获得确切的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>

问题答案:

根据您共享的 HTML ,单击带有文本作为 Login 的元素,您必须诱使 WebDriverwait
两次切换2个子frame元素,然后再次定位所需的元素,如下所示:

//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();

注意 :您不必考虑是否存在,<frameset>并且可以安全地忽略这些标签



 类似资料:
  • 我有下面这样的html页面,我需要在类clslogin中单击Login。 如何遍历以找到登录名。我正在将C#与selenium Webdriver一起使用。 对于XPath(/html/body/div/table/tbody/tr[1]/td[3]/a),我无法控制登录类,总是抛出元素未找到错误。有人能帮我得到准确的xpath吗。

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

  • 问题内容: 我需要从表“ td”中获取结果。但是在执行此操作之前,我需要浏览包含它的框架。框架是属于mainFrame的框架集元素之一。我尝试使用所有类型的导航“子”子帧,但均不起作用: 以下是该网页的简要布局: 在导航子帧之前是否需要导航框架集?我阅读了文档。所有的Internet示例都给出了一个简单的示例代码:driver.switchTo()。frame(“ mainFrame.0.chil

  • 问题内容: 谁能告诉我如何识别并切换到只有标题的iframe? 我已经尝试通过下面的代码,但不能正常工作 问题答案: 您可以使用cssSelector

  • 问题内容: 我有一个带有几个矩形元素的对象。使用,我试图单击主要对象之一。但是,使用xpath- checker我无法检测到相同的正确值。 到现在为止,我可以深入了解以下内容: 我的代码如下: 有人可以帮我吗? 问题答案: 尝试执行以下操作,让我知道问题是否仍然存在: 对于元素: 更新资料 最后,这几乎是最佳选择:

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