Как проверить ссылку 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.