2017-03-10 22 views
6

Tôi vừa mới nâng cấp lên 5.1.1 thước đo và đang phải đối mặt với một số vấn đề khi cài đặt cookie qua browser.manage(). AddCookie()thước đo 5.1.1 selen-webdriver phiên bản inconsitency

API đã thay đổi giữa các phiên bản 2 và 3 của Selenium-webdriver để mong đợi một đối tượng thay vì đối số 2..6 trước đó. Khi tôi thực hiện các thay đổi đối với mã của mình để sử dụng đối tượng, trình biên dịch bản ghi sẽ phàn nàn rằng nó dự kiến ​​2..6 đối số.

api cũ:

browser.manage().addCookie('cookieName', 'cookieVal'); 

api mới:

browser.manage().addCookie({name:'cookieName', value: 'cookieVal'}); 

Tôi nghĩ rằng đây là do @ loại/selen-webdriver trong package.json của thước đo góc v5.1.1 đang chỉ tay vào phiên bản 2,53,39. Phiên bản của selenium-webdriver thực tế cùng package.json tham chiếu là 3.0.1.

Đây có phải là giá trị giống nhau không? Có ai gặp vấn đề với điều này không?

+0

thước đo cũng có một sự phụ thuộc vào webdriver-js-extender, có sự tham khảo các phiên bản cũ của @ types/selenium-webdriver và selenium-webdriver trong package.json của nó. Có cách nào để ghi đè những điều này để buộc dự án của tôi sử dụng các phiên bản mà tôi đã chỉ định trong các dự án của tôi package.json không? – RJC

Trả lời

0

Tôi đang gặp vấn đề tương tự! Tôi biết rằng trình điều khiển @ types/selenium hiện đã được cập nhật lên phiên bản 3.0.0.

Tôi chưa có may mắn với điều này, nhưng bạn có thể thử cài đặt trực tiếp (ví dụ: npm install --save-dev @ types/selenium-webdriver) và thêm nó vào danh sách các loại trong tsconfig của bạn. tệp json (tức loại:.. [ "selen-webdriver"]

+0

Tôi tìm thấy bằng cách nhấp chuột phải vào hàm addCookie trong Visual Studio Code và chọn ** Đi đến Định nghĩa Loại **, tôi được đưa đến @ types/selenium-webdriver (v2) trong node_modules cho thước đo góc chứ không phải phiên bản (phiên bản 3) Tôi đã cài đặt trong thư mục gốc node_modules/@ types. –

+0

Tôi nhận được như vậy. Intellij đang sử dụng @ types/selenium-webdriver từ thước đo thay vì giá trị được định nghĩa trong tsconfig.json của tôi như bạn đã đề xuất. cách duy nhất tôi có thể sử dụng chính xác là đổi tên/xóa selenium-webdriver khỏi thư mục thước đo và thư mục webdriver-js-extender node_modules và sau đó nó hoạt động như nó sử dụng phiên bản đã cài đặt của tôi, nhưng điều này rõ ràng phá vỡ bản dựng. – RJC

+1

Tôi đã nêu ra vấn đề về github https://github.com/angular/protractor/issues/4148 – RJC

2

Yup, điều này xảy ra bởi vì các định nghĩa kiểu không được viết vào thời điểm đó

workaround

Dưới đây là cách giải quyết cho hiện tại:

(browser.manage() as any).addCookie({name:'cookieName', value: 'cookieVal'}); 

Chúng tôi đang đặt browser.manage đối tượng tùy chọn trả về là any. Sau đó, chúng tôi có thể cung cấp cho nó phương pháp addCookie.

HOẶC

định nghĩa nâng cấp

bạn có thể nâng cấp lên loại @/định nghĩa kiểu selen-webdriver của bạn lên phiên bản 3.

Các vấn đề liên quan