簡體   English   中英

getWindowHandle()Selenium Webdriver Javascript

[英]getWindowHandle() Selenium Webdriver Javascript

在工程技術的幫助下進行了一些更改。 這是我用來獲取新窗口句柄的最終代碼:

localdriver = @driver
@driver.getAllWindowHandles()
.then (handles) ->
    localdriver.switchTo().window(handles[1])

我當前正在運行一個使用Selenium Webdriver,Mocha,Chai和Grunt的自動化堆棧。 我正在用Coffeescript創建腳本,但是用Javascript回答我的問題就可以了。

我正在嘗試做的是:

  • 在瀏覽器主窗口上單擊按鈕
  • 將驅動程序切換到單擊按鈕后打開的第二個窗口
  • 在第二個窗口中執行操作
  • 關閉第二個窗口並返回到第一個窗口。

我搜尋了互聯網,尋找有關如何執行此操作的答案。 幾個月前才剛剛開始學習所有這些東西,而我仍然在嘗試創建東西。 我看到了很多Java和C +示例,但在Javascript方面卻很少。 誰能提供使用Selenium Webdriver和Javascript為上述場景設置代碼的示例?

var parent = driver.getWindowHandle();
var windows = driver.getAllWindowHandles();

driver.switchTo().window(windows[1]);

// do some stuff

driver.close();
driver.switchTo().window(parent);

您想要的是driver.getAllWindowHandles(),但是由於這將返回一個Promise,因此請確保您隨后使用then函數中的句柄

// select the newly opened window
driver.getAllWindowHandles().then(function gotWindowHandles(allhandles) {
    driver.switchTo().window(allhandles[allhandles.length - 1]);
});

每當新標簽頁打開時,它都會花費一些時間來呈現。 在這種情況下,很難切換選項卡,因為尚未打開選項卡,並且driver.getAllWindowHandles()不會為該選項卡提供處理程序。 我以這種方式解決了這個問題,假設我有一個打開的選項卡,單擊某些按鈕,就打開了新的第二個選項卡。

function openNewTab(driver) {
  driver.wait(function () {
    return driver.getAllWindowHandles().then(function (handles) {
      var isHandleCount2 = (handles.length == 2);
      if (isHandleCount2) {
        driver.switchTo().window(handles[1]);
      }
      return isHandleCount2;
    });
  }).then(function () {
  // Now do some stuff in new tab
    var buttonElement = driver.wait(until.elementLocated(By.xpath("//td[*//span[text()='Click me']]")));
    buttonElement.click();
  });
} 

此代碼將等待,直到句柄或制表符的數量不等於2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM