Как изменить фокус на новую всплывающую вкладку в Selenium? - PullRequest
20 голосов
/ 09 апреля 2009

Я использую Selenium и Firefox.

У меня есть ссылка на страницу (скажем, linkA), которая открывает новую страницу в новой вкладке. Новая вкладка отображается при нажатии на ссылку A. Затем я хочу взаимодействовать с новой страницей.

Вот мой сценарий селена:

  • нажмите на ссылку A
  • Пауза 5000
  • выберите заголовок окна
  • нажмите ссылку B (примечание: ссылка B находится на новой странице)

Selenium не может идентифицировать новую вкладку. Он сообщает:

[warn] Ссылка имеет цель '_blank', которая не поддерживается в Selenium! Рандомизация цели: selenium_blank24003

Можно ли как-нибудь указать Selenium взаимодействовать с отображаемой вкладкой?

Ответы [ 7 ]

4 голосов
/ 17 июня 2013

привет, попробуй это ..

Set<String> winSet = driver.getWindowHandles();
        List<String> winList = new ArrayList<String>(winSet);
        String newTab = winList.get(winList.size() - 1);
        System.out.println("winList: "+winList.size());
        //driver.close(); // close the original tab
        driver.switchTo().window(newTab);
4 голосов
/ 09 апреля 2009

Вы пытались добавить фокус окна между selectWindow и щелчком по ссылке B?

Edit: selectWindow принимает идентификатор окна JavaScript. Указывает ли ваша ссылка A идентификатор окна для доступа к Selenium?

Вот полная первая тестовая страница (t1.html), в вызове window.open второй параметр - «WindowTest», это javascript windowID, который ищет selenium.

<a href="javascript:void(0);" name="t1" 
   onclick="window.open('t2.html', 'WindowTest', 'width=450,height=600');">
 test
</a>

Вот вторая тестовая страница (t2.html):

<a href="t1.html" name="t2">2test2</a>

Запуск вашего скрипта заканчивается всплывающим окном на t1.html Мой сценарий

click              link=test
pause              5000
selectWindow       WindowTest
windowFocus
click              link=2test2
2 голосов
/ 24 ноября 2010

у меня сработало.

[info] Executing: |storeEval | this.browserbot.findElement('link=Pastanet').href | Link_PastaNet |
[info] Executing: |openWindow | ${Link_PastaNet} | MyWindows | 
0 голосов
/ 29 января 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.

}
0 голосов
/ 24 июня 2013
Iterator<String> windowIterator = driver.getWindowHandles().iterator();while (windowIterator.hasNext()) {
String windowHandle = windowIterator.next();
driverwindow = driver.switchTo().window(windowHandle);
if (_driverwindow.getTitle().equals("Title of the window to switch")) {
}
}
0 голосов
/ 28 апреля 2010

lericain59 отправил меня в правильном направлении, хотя мне пришлось внести несколько изменений, чтобы он работал с моей версией IDE Селена (у меня работает 1.0.6). Кроме того, для моих целей мне не нужно было столько проверять, чтобы он открывался в отдельном окне, только чтобы он открывал правильное окно.

Вот сценарий, который работал для меня.

  • storeEval | this.browserbot.findElement ('link = click here'). href | myUrl |
  • открыть | $ {myUrl} ||

this.page () не работает. Кажется, его заменили на this.browserbot. Кроме того, я только что открыл страницу напрямую - она ​​позволяет избежать ручной паузы и имеет меньше шагов.

0 голосов
/ 16 апреля 2010

Вот шаги, которые я предпринял для Selenium IDE:

  1. найти ссылку на вопрос
  2. удалить атрибут «target» из ссылки
  3. скопировать назначение href в переменную (myUrl)
  4. изменить ссылку href-> javascript: window.open (myUrl, 'myWindow' ')
  5. нажмите на ссылку
  6. выбрать окно "myWindow"

getEval | this.page (). findElement ("ссылка = нажмите здесь"). removeAttribute ("цель") ||

storeEval | this.page (). findElement ("ссылка = нажмите здесь"). href | myUrl

getEval | this.page (). findElement («ссылка = нажмите здесь»). href = »javascript: window.open (« $ {myUrl} »,« myWindow »)» ||

клик | ссылка = нажмите здесь ||

пауза | 1000 ||

selectWindow | name = myWindow ||

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...