2014-11-19 23 views
8

Tôi có một phần tử trên trang mà tôi đang thử nghiệm mà tôi phải cuộn xuống để hiển thị. Khi tôi thực hiện thử nghiệm của mình, tôi nhận được Phần tử không thể nhấp vào tại điểm (94, 188) chẳng hạn.Cuộn xuống phần tử có thước đo góc

tôi thử như sau:

dvr.executeScript('window.scrollTo(0,250);'); 

Nhưng nó đã không làm việc. Có ai biết về công việc này như thế nào không?

+3

bản sao có thể có của [Thước đo góc: Cuộn xuống] (http://stackoverflow.com/questions/23571852/protractor-scroll-down) – glepretre

+0

Tôi đã đọc kỹ phần này. Nó không có tác dụng đối với tôi. – andrepm

Trả lời

1

tôi nghĩ rằng đây là hữu ích cho bạn:

dvr.executeScript('window.scrollTo(94,188);').then(function() { 
    element(by.<<here your button locator>>).click(); 
}) 

webdriver của bạn không thể đọc mà điểm (1254,21), lý do là trình duyệt thước đo của bạn không có khả năng trang trải đầy đủ của trang những gì bạn muốn để kiểm tra, sau đó chúng tôi đưa ra một lệnh mà trình duyệt đang cuộn đến điểm đó (1254,21), sau đó thực hiện thao tác nhấp

9

Giải pháp window.scrollTo(x,x) không hoạt động đối với tôi. Đặc biệt khi thử nghiệm với trình giả lập ripple. Tôi đã quản lý để làm cho nó hoạt động bằng phương pháp scrollIntoView.

var scrollToScript = 'document.getElementById("ELEMENT ID").scrollIntoView();'; 

browser.driver.executeScript(scrollToScript).then(function() { 
    element(by.id('ELEMENT ID')).click(); 
    expect(...); 
}); 
31

Điều này có vẻ quá muộn để trả lời bạn .. Nhưng dù sao,

Các mã sau đây đã giúp tôi loại bỏ các Element là không thể nhấp lỗi.

var elm = element.all(by.css('.your-css-class')).get(9); 
browser.executeScript("arguments[0].scrollIntoView();", elm.getWebElement()); 

elm.click(); 

Về cơ bản này cho phép bạn di chuyển vào tầm nhìn của bạn ..

+1

hoạt động như một sự quyến rũ đối với tôi. Trong trường hợp của tôi, bài kiểm tra sẽ chuyển vào Chrome vì nó sẽ tự động cuộn, nhưng kiểm tra sẽ không thành công trong Firefox. Với scrollIntoView, kiểm tra vượt qua trong cả hai trình duyệt. – Cebe

+0

Cảm ơn bạn @Rahul! Bạn đã cứu ngày của tôi! – metamaker

1

Hãy thử sử dụng mô-đun NPM "sg-thước đo công cụ", làm việc tốt cho tôi với trình điều khiển firefox và chrome,

Đó là một sạch cách để cuộn trên các phần tử trang, Chi tiết khác tại đây https://www.npmjs.com/package/sg-protractor-tools

2

Tôi đã sử dụng liên kết mà Bassem đề xuất và hoạt động. Các bước thực hiện như sau:

  1. Chúng tôi sẽ phải cài đặt sg-thước đo công cụ với các lệnh sau (Sử dụng Sudo nếu bạn không có quản trị truy cập):

    npm install --save-dev sg-protractor-tools 
    
  2. Mã này sau đó sẽ giống như thế này (tôi đã cố gắng này trên wikipedia)

    var sgpt = require('sg-protractor-tools'); 
    it ('verify that scroll works', function() 
        { 
        browser.get('http://wikipedia.org');            
        browser.manage().window().setSize(1000, 1000); 
        sgpt.scroll.scrollTo(element(by.linkText('Terms of Use'))); 
        } 
    ); 
    
3
'use strict'; 

/** 
* Vertically scroll top-left corner of the given element (y-direction) into viewport. 
* @param scrollToElement element to be scrolled into visible area 
*/ 
function scrollTo(scrollToElement) { 
    var wd = browser.driver; 
    return scrollToElement.getLocation().then(function (loc) { 
     return wd.executeScript('window.scrollTo(0,arguments[0]);', loc.y); 
    }); 
}; 

Cách sử dụng:

scrollTo(element(by.css("div.someclass"))); 

Disclaimer: mã này là từ sg-thước đo công cụ 's scroll.js.
Mã được cấp phép theo giấy phép MIT.

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