1 Câu hỏi: Khẳng định một chuỗi chứa một giá trị nhất định (và không kiểm tra nếu nó không)

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Là một phần trong thử nghiệm nightwatch.js của tôi, tôi có đoạn mã sau sẽ liệt kê tất cả các giá trị của một yếu tố (trong trường hợp này là danh sách các thị trấn ở Vương quốc Anh);

"Page 2 Location SEO Crawl paths are displayed": function (browser) {
  browser.elements('xpath', '//a[contains(@href,"location")]', function (results) {
    results.value.map(function(element) {
      browser.elementIdAttribute(element.ELEMENT, 'innerText', function(res) {
        var resme = res.value;
          console.log(resme)
      });
    });
  });
},

Điều này liệt kê chính xác tất cả các giá trị phần tử, như vậy;

 nhập mô tả hình ảnh tại đây

Điều tôi muốn làm bây giờ là kiểm tra xem Nottingham có được liệt kê trong kết quả không và Thất bại nếu không.

Tôi đã cài đặt gói khẳng định npm để xem điều đó có giúp ích gì không, điều này đã thay đổi mã của tôi thành;

"Page 2 Location SEO Crawl paths are displayed": function (browser) {
  browser.elements('xpath', '//a[contains(@href,"location")]', function (results) {
    results.value.map(function(element) {
      browser.elementIdAttribute(element.ELEMENT, 'innerText', function(res) {
        var resme = res.value;
        console.log(resme);
          if (resme.includes("Nottingham")) {
            assert.ok(true);
          }
          else {
            assert.ok(false);
        }
      });
    });
  });
},

nhưng điều này không hoạt động, vì tôi liên tục gặp phải lỗi sau;

 nhập mô tả hình ảnh tại đây

Việc sử dụng gói khẳng định là cách tốt nhất để kiểm tra điều này hoặc có một cách đơn giản hơn để khẳng định rằng Nottingham được đưa vào danh sách này và các thử nghiệm thất bại nếu không.

Tôi đã thử sử dụng resme.includes("Nottingham"), nhưng điều này không thất bại trong thử nghiệm.

Mọi trợ giúp đều được đánh giá cao.

Cảm ơn.

    
0
1 Câu trả lời                              1                         

Có vẻ như hàm bên trong nhất (hàm có độ phân giải là tham số) được gọi cho mọi mục và resme là mục bạn hiện đang lặp, không phải là một mảng, do đó, hàm bao gồm không hoạt động như mong đợi.

Tôi không quen thuộc với thư viện này nhưng tôi đoán bạn phải làm một cái gì đó như thế này:

"Page 2 Location SEO Crawl paths are displayed": function (browser) {
  var found = false;
  browser.elements('xpath', '//a[contains(@href,"location")]', function (results) {
    results.value.map(function(element) {
      browser.elementIdAttribute(element.ELEMENT, 'innerText', function(res) {
        var resme = res.value;
        console.log(resme);
        if (resme === "Nottingham") {
          found = true;
          // Maybe return something like null or 0 to stop iterating (would depend on your library).
        }
      });
    });
  });
  assert.ok(found)
},

Bạn khởi tạo một biến "được tìm thấy" với giá trị sai và khi bạn lặp lại mọi giá trị, bạn đặt nó thành true nếu bạn tìm thấy nó. Tùy chọn, bạn nên phá vỡ các lần lặp tại thời điểm đó. Khi toàn bộ quá trình kết thúc, hãy khẳng định rằng bạn đã tìm thấy giá trị bạn muốn.

    
0
2019-05-08 15: 57: 47Z
nguồn đặt đây