2013-06-21 3 views
2

페이지의 일부 웹 링크에는 사용자가 Facebook 및 Twitter를 말하도록 지시하는 외부 링크가 있습니다. 링크는 HMTL 태그 target="_blank"을 사용하여 트위터 페이지에 대해 새 브라우저 탭이 열립니다.Robot Framework 새 브라우저 탭이 열렸는지 확인하십시오.

1. 새 브라우저 탭이 열려 있는지 확인하고, 2. 포커스를 설정하고 3. 새 브라우저 탭에서 페이지 요소의 유효성을 검사합니다. # 3 부분은 일단 그것에 집중하면 충분히 쉬울 것입니다. 작업 # 1과 # 2, 나는 알아 내지 못합니다. 탭을 지원하지 않습니다 Selenium2Library (WebDriver)

답변

2

셀레늄을 사용

(2013 년 6 월은, 셀레늄 2.33.0)는 항상하고 대신 새 창을 엽니 다. 테스트에서 새 탭이 열리면 행운을 빈다.

즉, 올바르게 새 창을 열면 Select Window을 사용하십시오.

Select Window | url=https://twitter.com/expectedPage 

을 내 작업 WebDriver (2.33.0) 코드는 Java에, 희망이 조금 도움이 될 것입니다. 설명하는 문제는 내 로봇 지식이 떨어지기 시작하는 곳입니다.

@Test 
public void targetBlankLinkTest() { 
    // load the website and make sure only one window is opened 
    driver.get(file("TargetBlankLinkTest.html")); 
    assertEquals(1, driver.getWindowHandles().size()); 

    // click the link and assert that a new window has been opened  
    driver.findElement(By.linkText("Follow us on Twitter!")).click(); 
    Set<String> windowHandles = driver.getWindowHandles(); 
    assertEquals(2, windowHandles.size()); 

    // switch to the new window and do whatever you like 
    // (Java doesn't have Switch Window functionality that can select by URL. 
    // I could write it, but have been using this trick instead) 
    for (String handle : windowHandles) { 
     if (handle != driver.getWindowHandle()) { 
      driver.switchTo().window(handle); 
     } 
    } 
    assertThat(driver.getCurrentUrl(), containsString("twitter.com")); 
} 
+0

감사합니다. Slanec. 그러나 적어도 새로운 브라우저 탭이 열렸는지 확인하는 방법이 있습니까? – Dave

+0

@Dave 당신이 얻을 수있는 가장 가까운 것은 ['Get Window Identifiers'] (http://rtomac.github.io/robotframework-selenium2library/doc/Selenium2Library.html#Get%20Window%20Identifiers)입니다. 창이 열렸습니다. 나는이 목적을 위해 Java counterpart를 항상 사용한다. –

+0

... 아니면 단순히 'Select Window' 메소드를 실행하고 그 안에 무언가를 유효화 ('Title Should Be''?)하고, 실패하면 열려 있지 않습니다. –

0

내가 추천 :

1. First, acquire new window handle by using the switchTo() method. 
2. Then bring that window into focus using a JavaScriptExecutor: 
    ((JavascriptExecutor) myTestDriver).executeScript("window.focus();"); 
    Using switchTo() without a javascript executor to get focus , is not 
    very reliable in my opinion. 
3. Next, do what you need to do in that window. 
4. Use driver.close() to close that window. 
5. Verify you are back at the parent window with focus. 
0

하는 새 탭을 열거 나하지 않은 경우 다음 방금 윈도우가 이전과 새로운를 여는 링크/요소를 클릭 한 후 처리 비교할 수 있는지 확인하려면 탭. 이 코드를 따라하면 도움이 될 것입니다.

여기 $ {LINKDIN}은 (는) 새 탭에서 열리는 요소입니다. 그래서 그것을 클릭하기 전에 변수의 창 핸들을 저장하고 요소를 다시 클릭 한 후에 변수의 창 핸들을 저장하십시오. 이제 새 탭이 열리면 변수 값이 다르게 나타나고 새 탭이 열리지 않으면 두 변수 값이 동일합니다.이 방법으로 새 ​​열 탭을 확인할 수 있습니다.

Go Back 
${Current_window}  List Windows 
Click Element   ${LINKDIN} 
${New_Windows_list}  List Windows 
Should Not Be Equal  ${Current_window} ${New_Windows_list} 
0

사용 로봇 Selenium2Library 키워드 :

@{windows} = List Windows 
${numWindows} = Get Length ${windows} 
${indexLast} = Evaluate ${numWindows}-1 
Should Be True ${numWindows} > 1 
Select Window @{windows}[${indexLast}] 
Location Should Contain /my/url/whatever 
Title Should Be myTitle 
Page Should Contain ... 

당신은 아이디어를 얻을.

관련 문제