[英]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.