Как проверить ссылку target = "_ blank", используя селен? - PullRequest
7 голосов
/ 19 июля 2010

Некоторые ссылки на нашей странице открываются в новом окне, используя target = "_ blank".Как сделать так, чтобы селен смотрел в правильное окно, чтобы убедиться, что страница ссылается на нужную страницу?

Вот что я пытался:

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

Ответы [ 6 ]

5 голосов
/ 19 июля 2010

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

open                /page
click               link=Find us on Facebook!
pause               1000
selectWindow
verifyTextPresent   some text
4 голосов
/ 18 октября 2011
    $this->click('css=.sf_admin_action_page:first a');

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

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

// пс. selenium2

1 голос
/ 10 января 2013

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

selectPopUp:

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

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

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

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

keyPress (локатор, 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", "\119". [Give for CTRL+T]

Simulates a user pressing and releasing a key.
0 голосов
/ 30 января 2014

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

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 голосов
/ 04 марта 2013

Я использовал немного другой подход, который заставлял любые ссылки использовать 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));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...