C# Selenium WebDriver C-很难从iFrame切换回主页标题

C# Selenium WebDriver C-很难从iFrame切换回主页标题,c#,selenium,webdriver,automated-tests,C#,Selenium,Webdriver,Automated Tests,好心点,这是我第二次使用硒和碳 我正在IE中测试网页,并且能够在模式弹出窗口/框架/等之间切换。在关闭当前页面后,我遇到了问题,该页面将我导航回起点,为页面上的另一个主标题选择元素 因此,这是一个开始,在您提问之前,它可以正常工作,它是基于网络的酒店管理软件: // Navigate to and logon to page this.Login(); // Selects the reservations main heading

好心点,这是我第二次使用硒和碳

我正在IE中测试网页,并且能够在模式弹出窗口/框架/等之间切换。在关闭当前页面后,我遇到了问题,该页面将我导航回起点,为页面上的另一个主标题选择元素

因此,这是一个开始,在您提问之前,它可以正常工作,它是基于网络的酒店管理软件:

        // Navigate to and logon to page
        this.Login();

        // Selects the reservations main heading
        **this.ClickElementByID("rpt_TopMenu_ctl06_lbtn_MenuItem");** //This is a "MainMenu" item in question

        // Selects the reservations sub-heading
        this.ClickElementByID("x:1675617787.4:adr:0.2");

        // Switch to main page frame
        this.TargetFrame("MainFrame");

        // Selects 'create new reservation'
        this.ClickElementByID("wbtn_CreateIndividualReservation");

        //// Set text for title
        this.EnterTextByID("tc_tp_Main_rpt_Guests_ctl00_winp_Title", "Mr");

        //// Set text for firstname
        this.EnterTextByID("tc_tp_Main_rpt_Guests_ctl00_winp_Forename", "A");

        // Set text for lastname
        this.EnterTextByID("tc_tp_Main_rpt_Guests_ctl00_winp_Surname", "ABCDEFG");
它继续输入数据,直到我点击关闭。我的假设是,它仍然将我注册为iFrame“大型机”。但是没有任何其他帧ID,我不知道如何切换回未聚焦的页面视图。我所在的框架位于我试图选择“分离”的元素标题下方

标题确实有一个FormID,但不确定如何将焦点切换到这个?…帮助

任何批评都是很好的,因为我还在学习,不想养成坏习惯,ps,我自以为是,所以可能已经有一些坏习惯了


-Colin

使用C语言中的WebDriver,可以获得如下当前帧元素:

WebElement el = (WebElement) ((JavascriptExecutor) driver).executeScript("return window.frameElement");

在切换到大型机之前,您应该获取并存储此元素,这样您就可以根据需要切换回来。

忘记添加,我使用的是Selenium Webdriver而不是IDE,我无法习惯IDE…所以在您的代码中,您使用自己的方法包装并拒绝共享的某个地方,您正在执行driver.SwitchTo.frameName,对吗?完成框架中的工作后,是否要退出返回顶层框架?或者您需要导航到同级帧吗?还是我完全错过了什么?根据你的描述,我无法想象框架结构,以及你要去的地方。干杯,吉姆,我一进去就给你添加我的方法,让你看看。是的,只是把我解释的开头读得有点乱。。。。总而言之,我选择了一个主标题;选择一个子标题,在主机上加载更多可选择项;切换到主框架以进行选择。在此之后,我想选择另一个主标题,我正在努力选择元素。我试过很多方法。有没有一种方法可以让我不去关注我切换到的画面?这是我能想到的唯一解决方案。您是否尝试过driver.SwitchTo.DefaultContent?这就把焦点放回到了顶层框架上。最后3种方法是有问题的@JimEvans..///切换到新帧/////受保护的无效TargetFramestring frameId{mWebDriver.SwitchTo.FrameframeId;}/////切换到新窗口///////受保护的无效TargetWindowstring windowId{mWebDriver.SwitchTo.WindowID;}干杯,马特,我来试试!干杯!