cy.url()和/或cy.location(';href';)不返回字符串
我有一个编辑页面。当我添加任何内容并单击“保存”按钮时,我的URL将更改,在URL中添加一个随机id。我想在每次单击“保存按钮”时检查我的ID是否都在更改 我将URL结果保存在变量中并希望检查它,我的操作如下:cy.url()和/或cy.location(';href';)不返回字符串,url,automated-tests,e2e-testing,cypress,Url,Automated Tests,E2e Testing,Cypress,我有一个编辑页面。当我添加任何内容并单击“保存”按钮时,我的URL将更改,在URL中添加一个随机id。我想在每次单击“保存按钮”时检查我的ID是否都在更改 我将URL结果保存在变量中并希望检查它,我的操作如下: const currentURL=cy.url(); cy.get('.editor工具栏操作保存')。单击(); cy.url().should('not.eq',currentURL); 但是我的currentURL变量的类型不是字符串: 应不等于{Object(chainerId
const currentURL=cy.url();
cy.get('.editor工具栏操作保存')。单击();
cy.url().should('not.eq',currentURL);
但是我的currentURL
变量的类型不是字符串:
应不等于{Object(chainerId,firstCall)}
如何使用变量?这些命令返回的是可链接的类型,而不是字符串等基本值,因此将它们分配给变量将需要进一步操作来“提取”字符串 为了获取url字符串,您需要执行以下操作
cy.url().then(urlString => //do whatever)
tl;博士
,你必须使用它们的收益率
cy.url().then(url=>{
cy.get('.editor工具栏操作保存')。单击();
cy.url().should('not.eq',url);
});
解释
有人问了一个类似的问题,并详细解释了这一现象:
不能指定或使用任何Cypress命令的返回值。命令排队并异步运行
解决方案也显示为:
访问每个Cypress命令产生的结果
cy.get('button')。然后($btn)=>{
//$btn是上一个
//命令使我们屈服
})
还可以查看。参考下面的代码片段,在这里可以获取当前URL并将其存储在变量中,通过cy.log()打印
谢谢你的回答。但当我使用这种格式时,我的URL显示了一部分。预期不等于中未显示的我的IDURL@NarinePoghosyan是的,因为您在单击按钮之前保存了URL。您说随机id是在您保存项目后添加的。对不起,我说错了。首先,我添加任何文本,然后单击“保存”并想要获取URL,然后我更改文本并再次单击“保存”。我的2个带有IDsI的URL更改了我的内容。谢谢亲爱的,在我的代码中添加cy.wait(2000)后它的工作谢谢亲爱的,它的工作,在我的代码中添加cy.wait(2000)后请注意,Cypress不是普通的wait/async JavaScript,而是使用它自己的可链接回调机制。只是为了确保在您说“Cypress是异步的”时不会出现混淆。
context('Get Current URL', () => {
it('Get current url and print', () => {
cy.visit('https://docs.cypress.io/api/commands/url')
cy.url().then(url => {
const getUrl = url
cy.log('Current URL is : '+getUrl)
})
})
})