2010-07-19 34 views
6

Một số liên kết trên trang của chúng tôi mở trong một cửa sổ mới bằng cách sử dụng target = "_ blank". Làm thế nào tôi có thể làm cho selen nhìn vào cửa sổ bên phải để tôi có thể xác minh rằng trang đang liên kết đến đúng trang?Làm cách nào để xác minh liên kết target = "_ blank" bằng selen?

Dưới đây là những gì tôi đã cố gắng:

open    /page/ 
click    link=Find us on Facebook! 
pause    2000 
selectWindow  title=window title 
verifyTextPresent some text 
+1

Tôi không quen thuộc với Selenium, vì vậy tôi không thể nào đưa ra một câu trả lời thực tế. Tuy nhiên, như một nhận xét chung về thiết kế web, tôi khuyên bạn nên chống lại thuộc tính 'target', sử dụng bất kỳ giá trị nào. Chữ 'M' trong HTML là 'Đánh dấu'; HTML không nên chỉ định hành vi, chỉ có ý nghĩa. Đối với một liên kết bên ngoài, tôi khuyên bạn nên sử dụng 'rel =" external "', và sau đó JavaScript để tạo các liên kết như vậy mở trong một cửa sổ mới. [Ví dụ] (http://articles.sitepoint.com/article/standards-compliant-world/3) –

Trả lời

5

Bạn không cần phải vượt qua một tham số để selectWindow. Trình duyệt sẽ tự động cung cấp cho cửa sổ mới của bạn tập trung, bạn chỉ cần nói với selen rằng nó đã thay đổi. Ngoài ra hãy chắc chắn rằng bạn cung cấp cho cửa sổ đủ thời gian mới của bạn để thực sự nạp trước khi xác minh bất cứ điều gì:

open    /page 
click    link=Find us on Facebook! 
pause    1000 
selectWindow 
verifyTextPresent some text 
4
$this->click('css=.sf_admin_action_page:first a'); 

    $this->waitForPopUp('_blank'); 
    $this->selectWindow('_blank'); 

    $this->waitForElementPresent('css=.t-info:contains(xxx2)'); 

// ps. selenium2

1

bạn nên sử dụng selectPopUp để lấy nét cửa sổ mới. xem tài liệu của nó:

selectPopUp:

  • Arguments: windowID - một định danh cho các cửa sổ popup, có thể mất trên một số ý nghĩa khác nhau

  • Đơn giản hóa quá trình lựa chọn một popup cửa sổ (và không cung cấp chức năng ngoài những gì selectWindow() đã cung cấp).

    • Nếu windowID không được chỉ định hoặc được chỉ định là "null", cửa sổ không phải trên cùng đầu tiên được chọn. Cửa sổ trên cùng là cửa sổ được chọn bởi selectWindow() mà không cung cấp một windowID. Điều này không nên được sử dụng khi có nhiều cửa sổ bật lên đang được phát.
    • Nếu không, cửa sổ sẽ được tra cứu xem xét windowID như sau theo thứ tự: 1) "tên" của cửa sổ, như được chỉ định cho window.open(); 2) biến javascript là tham chiếu đến cửa sổ; và 3) tiêu đề của cửa sổ. Đây là tra cứu được sắp xếp giống nhau được thực hiện bởi selectWindow.
0

tôi mất cách tiếp cận hơi khác nhau mà là để buộc bất kỳ liên kết để sử dụng target = _self để họ có thể được kiểm tra trong cùng một cửa sổ:

protected void testTextLink(WebDriver driver, final String linkText, final String targetPageTitle, final String targetPagePath) { 

    WebDriverWait wait = new WebDriverWait(driver, 20); 
    WebElement link = driver.findElement(By.linkText(linkText)); 

    // ensure that link always opens in the current window 
    JavascriptExecutor js = (JavascriptExecutor) driver; 
    js.executeScript("arguments[0].setAttribute('target', arguments[1]);", link, "_self"); 

    link.click(); 
    wait.until(ExpectedConditions.titleIs(targetPageTitle)); 

    // check the target page has the expected title 
    assertEquals(driver.getTitle(), targetPageTitle); 
    // check the target page has path 
    assertTrue(driver.getCurrentUrl().contains(targetPagePath)); 
} 
0

Đơn giản chỉ cần sử dụng mã này.

public void newtab(){ 

System.setProperty("webdriver.chrome.driver", "E:\\eclipse\\chromeDriver.exe"); 

WebDriver driver = new ChromeDriver(); 

driver.get("http://www.w3schools.com/tags/att_a_target.asp"); 

//I have provided a sample link. Make sure that you have provided the correct link in the above line. 

driver.findElement(By.className("tryitbtn")).click(); 

new Actions(driver).sendKeys(driver.findElement(By.tagName("html")), Keys.CONTROL).sendKeys(driver.findElement(By.tagName("html")), Keys.NUMPAD2).build().perform(); 


// In keyboard we will press 

//ctrl+1 for 1st tab 

//ctrl+2 for 2nd tab 

//ctrl+3 for 3rd tab. 

//Same action is written in the above code. 

} 
//Now you can verify the text by using testNG 

Assert.assertTrue(condition); 
0

Trong trường hợp này, chúng ta có thể sử dụng KeyPress

keyPress (định vị, keySequence) Arguments:

locator - an element locator 
    keySequence - Either be a string("\" followed by the numeric keycode of the key to be pressed, normally the ASCII value of that key), or a single character. For example: "w", "\119". [Give for CTRL+T] 

Simulates a user pressing and releasing a key. 
Các vấn đề liên quan