Как проверить ссылку target= "blank" с помощью selenium?

некоторые ссылки на нашей странице открываются в новом окне с помощью target= "_blank". Как я могу заставить selenium смотреть в правое окно, чтобы я мог проверить, что страница связана с правой страницей?

вот что я пробовал:

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

6 ответов


вам не нужно передавать параметр selectWindow. Браузер автоматически даст вашему новому окну фокус, вам просто нужно сказать selenium, что он изменился. Также убедитесь, что вы даете своему новому окну достаточно времени для фактической загрузки, прежде чем проверять что-либо:

open                /page
click               link=Find us on Facebook!
pause               1000
selectWindow
verifyTextPresent   some text

    $this->click('css=.sf_admin_action_page:first a');

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

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

/ / ps. selenium2


вы должны использовать selectPopUp для фокусировки нового окна. смотри документ:

selectPopUp:

  • Аргументы: windowID-идентификатор всплывающего окна, который может принимать различные значения

  • упрощает процесс выбора всплывающего окна (и не предлагает функциональность за пределами того, что selectWindow () уже предоставляет).

    • если windowID либо не указан, либо указан как "null", выбрано первое не-верхнее окно. Верхнее окно-это то, которое будет выбрано selectWindow () без предоставления windowID . Это не должно использоваться, когда больше одного окна в игре.
    • в противном случае окно будет просмотрено с учетом windowID как следующего порядка: 1) "имя" окна, как указано в окне.open (); 2) переменная javascript, которая является ссылкой на окно; и 3) заголовок окна. Это тот же упорядоченный поиск в исполнении selectWindow .

Я взял немного другой подход, который должен был заставить любые ссылки использовать target = _self, чтобы их можно было протестировать в одном окне:

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));
}

просто используйте этот код.

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);

в этом случае мы можем использовать KeyPress

нажатие клавиши (locator, keySequence) Аргументы:

    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", "9". [Give for CTRL+T]

Simulates a user pressing and releasing a key.