2009-04-08 11 views
20

Używam Selenium i Firefox.Jak zmienić fokus na nową wyskakującą zakładkę w Selenie?

Mam link na stronie (na przykład linkA), który otwiera nową stronę w nowej karcie. Nowa zakładka jest wyświetlana po kliknięciu linku A. Następnie chcę wejść w interakcję z nową stroną.

Oto mój skrypt selen:

  • kliknięcie linka
  • pauza 5000
  • selectWindow Tytuł
  • kliknięcie linkB (uwaga: linkB jest na nowej stronie)

Selen nie mogę zidentyfikować nowej karty. Podaje:

[warn] Link ma cel "_blank", który nie jest obsługiwany w Selenie! Cel losowania to: selenium_blank24003

Czy jest jakiś sposób, aby powiedzieć Selenium, aby wchodził w interakcje z wyświetlaną zakładką?

+0

Czy to rozwiązałeś? –

Odpowiedz

4

Czy próbowałeś dodać oknoRozwiń się pomiędzy selectWindow i kliknij linkB?

Edytuj: selectWindow pobiera identyfikator okna Javascript. Czy twój linkA określa identyfikator okna dla Selenium, aby uzyskać dostęp?

Oto pełna pierwsza strona testowa (t1.html), w wywołaniu window.open drugim parametrem jest "WindowTest", to jest javascript windowID, którego szuka selen.

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

Oto druga strona testowa (t2.html):

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

Uruchamianie skryptu kończy się okienko na t1.html mój skrypt

click    link=test 
pause    5000 
selectWindow  WindowTest 
windowFocus 
click    link=2test2 
+0

On nie mówi o wyskakującym okienku przez window.open. –

0

Tutaj są kroki, które podjąłem dla Selenium IDE:

  1. znaleźć link w pytaniu
  2. usunąć atrybut „target” z linku
  3. skopiowania href cel w zmiennej (myUrl)
  4. zmodyfikować link href-> JavaScript: window.open (myUrl "MyWindow „)
  5. kliknięcie na link
  6. wybierz okno 'MyWindow'

getEval | this.page(). findElement ("link = kliknij tutaj"). removeAttribute ("cel") ||

storeEval | this.page(). findElement ("link = kliknij tutaj"). href | myUrl

getEval | this.page(). findElement ("link = kliknij tutaj"). href = "javascript: window.open ("$ {myUrl}", "myWindow") "||

kliknij | link = kliknij tutaj ||

pauza | 1000 ||

selectWindow | name = myWindow ||

0

lericain59 wysłał mnie we właściwym kierunku, chociaż musiałem wprowadzić kilka zmian, ponieważ działa z moją wersją IDE selenu (używam wersji 1.0.6). Ponadto, dla moich celów, nie musiałem weryfikować tak bardzo, że otwierało się ono w osobnym oknie, tylko że otwierało poprawne okno.

Oto skrypt, który zadziałał dla mnie.

  • storeEval | this.browserbot.findElement ("link = kliknij tutaj"). href | myUrl |
  • otwórz | $ {myUrl} ||

this.page() nie działa. Wygląda na to, że został zastąpiony tym.browserbot. Otworzyłem też stronę bezpośrednio - unika ona ręcznej pauzy i ma mniej kroków.

2

To zadziałało dla mnie.

[info] Executing: |storeEval | this.browserbot.findElement('link=Pastanet').href | Link_PastaNet | 
[info] Executing: |openWindow | ${Link_PastaNet} | MyWindows | 
4

hi próbować ten jeden ..

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

Wystarczy użyć tego kodu.

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. 

} 
Powiązane problemy