gpt4 book ai didi

javascript - Cypress :比较 2 个站点中的信息

转载 作者:行者123 更新时间:2023-11-30 19:20:31 25 4
gpt4 key购买 nike

我从 cypress 开始,需要比较 2 个不同的环境。

我编写了一个脚本,但无法正常工作。

我的目标是:

1 - 在 2 个不同的环境中搜索特定的选择器值。

2 - 获取它的值(在两个环境中),然后比较它是否相等。

下面的比较有效,但代码看起来很糟糕,它在第一个错误断言中停止并且无法查询引用选择器,只能查询文本。

感谢任何帮助。

describe('Testing Page', function() {

//urls i need to test
var relative_urls = [
'/products/test1',
'/products/test2',
]

relative_urls.forEach((url) => {
//each url is compared here...
var productInfo = [];
//here goes the environments URL.
var testURL = 'https://www.myurl.com' + url;
var referenceURL = 'http://test.myurl.com' + url;

it('Comparing data from url:' + url, function() {

cy.visit(testURL)
//get data from selector and add it to array
cy.get('body').find(".myselector h1").should(($input) => {
productInfo.push($input.val())
})
cy.get('body').find(".myselector h2").should(($input) => {
productInfo.push($input.val())
})
//requesting second url
cy.request(referenceURL)
.its('body').should( ($input) => {

for (var j=0;j<productInfo.length;j++) {
//expect works, but compares to all site, and i need to search in a specific selector.
//Also, when it gets the first error, it stops and do not search all elements of array

expect($input.includes(productInfo[j]), 'Notice: ' + productInfo[j]).to.be.true
}
}
})
})
})
})

最佳答案

通过阅读文档,cy.request 实际上是在不进行任何解析的情况下发出纯 HTTP 请求,这意味着您基本上必须自己解析响应的主体。 cy.visit 将实际获取 DOM 元素,因此您可以使用 Cypress 的查询语法来导航页面。

我认为一旦您获得了第一页的元素值,您就应该再次执行 cy.visit 并解析第二页。

编辑:显然你不能使用 cy.visit 跨域。在那种情况下,也许您可​​以尝试将响应主体解析为 DOM 节点,如下所示:

var el = document.createElement( 'html' );
el.innerHTML = request.body // you can get the request object from cy.request;

然后使用 el.querySelector 使用 CSS 语法在 DOM 树中导航。

关于javascript - Cypress :比较 2 个站点中的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57529877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com