Trước hết, selen không không cung cấp một API qua trình duyệt đáng tin cậy để làm việc với các tab trình duyệt. Một cách tiếp cận chung để mở hoặc đóng một tab (chắc chắn, không hoàn toàn đáng tin cậy) là để gọi phím tắt trình duyệt, cho Chrome:
- mở tab:
CTRL
/COMMAND
+ T
- tab gần:
CTRL
/COMMAND
+ W
Trong thước đo góc, tìm các phần tử body
và "gửi phím" với nó:
var body = element(by.tagName("body"));
body.sendKeys(protractor.Key.chord(protractor.Key.CONTROL, "t"))
body.sendKeys(protractor.Key.chord(protractor.Key.CONTROL, "w"))
.210
Hoặc, sử dụng browser.actions()
:
browser.actions().keyDown(protractor.Key.CONTROL).sendKeys('t').perform();
browser.actions().keyDown(protractor.Key.CONTROL).sendKeys('w').perform();
Ngoài ra, để mở một tab mới, có một hack thú vị (giới thiệu here), mà về cơ bản sẽ tiêm nhiễm một yếu tố mới a
vào trang và gọi click
chuột sự kiện:
function openNewTab (url) {
return browser.driver.executeScript(function(url) {(
function(a, url){
document.body.appendChild(a);
a.setAttribute('href', url);
a.dispatchEvent((function(e){
e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, true, false, false, false, 0, null);
return e;
}(document.createEvent('MouseEvents'))))
}(document.createElement('a'), url)
);
}, url)
};
Ngoài ra còn có window.close()
vui vẻ ction, nhưng nó sẽ không đóng tab nếu nó không được mở qua window.open()
(reference). Nói cách khác, nếu đây là tab bạn mở theo cách thủ công, thì bạn có thể sử dụng phương pháp window.open() -> window.close()
với sự trợ giúp của browser.executeScript()
.
'close()' đóng tab cho tôi khi tôi mở một hình ảnh. Tuy nhiên, không chắc chắn! –
@alecxe điều này rất hữu ích đối với tôi. – Aaron
@Aaron tốt để biết, là nó làm việc cho cả firefox và chrome? Cảm ơn. – alecxe