如何处理页面对象模型中的框架

时间:2015-12-30 05:29:36

标签: java selenium

请告诉我如何在页面对象模型中处理帧?

尝试使用线性脚本时,同样有效,但当我将其移动到页面对象模型时,脚本会失败。

目前在我的框架中是我遵循的流程:

  1. switchTo()作为通用函数并放入通用库中。

  2. 在需要将控件移动到所需框架的页面中,我调用了通用库的public void switchToFrame(int frame) { try { Driver.driver.switchTo().frame(frame); System.out.println("Navigated to frame with name " + frame); } catch (NoSuchFrameException e) { System.out.println("Unable to locate frame with id " + frame + e.getStackTrace()); } } 方法。

  3. 接下来将控件传递给框架后,我已经在所需的网页元素中执行了操作。(事情是它无法找到特定的对象)

  4. 有谁可以告诉我可能的问题?

    公共图书馆:

    public void createticket(String interactionTitle,String interactionDesc,String category,String originText,String priorityText,String impactText) throws InterruptedException
        {
            switchToFrame(1);
            System.out.println("Navigated to Frame");
            waitForIdPresent("X49");
            titleEdt.sendKeys(interactionTitle);//unable to enter here
            descEdt.sendKeys(interactionDesc);
            dropDown(origipublic void createInteraction(String interactionTitle,String interactionDesc,String category,String originText,String priorityText,String impactText) throws InterruptedException
        {
            switchToFrame(1);
            System.out.println("Navigated to Frame");
            waitForIdPresent("X49");
            Driver.driver.findElement(By.id("X49")).sendKeys(interactionTitle);
            descEdt.sendKeys(interactionDesc);
            dropDown(originDropDown, originText);
    }
    

    页面:

    @Test
        public void createTestTicket() throws EncryptedDocumentException, InvalidFormatException, IOException, InterruptedException{
    
            homePage.getBtn().click();
            homePage.getLnk().click();
            interactionDetails.createTicket("test ticket","test ticket","incident","CALL","P1 / <1hour","1 - Enterprise");
        }
    

    测试脚本:

    {{1}}

1 个答案:

答案 0 :(得分:0)

我认为,waitForIdPresent(&#34; id&#34;)会在您的情况下抛出错误。 在您提供的评论中,您

public void waitForIdPresent(String wbId)
{
    WebDriverWait wait = new WebDriverWait(Driver.driver,20);
    wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.name(wbId)));   ‌
}

将By.name更改为By.id。