2

善良,这是我第二次使用 selenium 和 C#......

我正在 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 'MainFrame'。但是没有任何其他框架 ID,我不知道如何切换回不集中的页面视图。我所在的框架位于我尝试选择(单独)的元素标题下方。

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

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

-科林

4

1 回答 1

3

使用 C# 中的 WebDriver,您可以像这样获取当前框架元素:

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

您应该在切换到 MainFrame 之前获取并存储此元素,以便您可以根据需要切换回来。

于 2013-06-07T16:42:00.970 回答