我們頁面上的某些鏈接使用target =「_ blank」在新窗口中打開。我怎樣才能讓硒看右邊的窗口,以便我可以驗證頁面鏈接到正確的頁面?如何使用硒驗證目標=「_ blank」鏈接?
這是我一直想:
open /page/
click link=Find us on Facebook!
pause 2000
selectWindow title=window title
verifyTextPresent some text
我們頁面上的某些鏈接使用target =「_ blank」在新窗口中打開。我怎樣才能讓硒看右邊的窗口,以便我可以驗證頁面鏈接到正確的頁面?如何使用硒驗證目標=「_ blank」鏈接?
這是我一直想:
open /page/
click link=Find us on Facebook!
pause 2000
selectWindow title=window title
verifyTextPresent some text
你並不需要一個參數傳遞給selectWindow。瀏覽器會自動給你的新窗口關注,你只需告訴硒已經改變了。另外,還要確保你給你的新窗口足夠的時間驗證什麼之前實際加載:
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()已經提供的功能)。
我採取略有不同的做法,是迫使任何環節爲使用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);
在這種情況下,我們可以使用按鍵響應
按鍵(定位器,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.
我不熟悉的硒,所以我不可能給出一個實際的答案。然而,作爲網頁設計的一般評論,我推薦使用任何值來反對'target'屬性。 HTML中的'M'是'標記'; HTML不應該指定行爲,只是含義。對於外部鏈接,我建議使用'rel =「external」',然後使用JavaScript在新窗口中打開這些鏈接。 [實施例](http://articles.sitepoint.com/article/standards-compliant-world/3) – 2010-07-19 15:07:24