我正在自动化我的回归检查表,我被困在一个测试用例中,在这个测试用例中,我必须测试一个在新选项卡中打开的链接,因为Cypress不支持多个选项卡,所以我想在同一个选项卡中打开那个链接。问题是按钮在标签中不包含任何href链接。这就是课堂。
注意:如果存在href,下面显示的代码片段可以正常工作。
<a rel="noopener noreferrer" target="_blank">
<div class="tooltip" style="width: fit-content;">
<span class="tooltip-trigger">
<button class="button-wrapper default undefined undefined mr-3">Preview</button>
</span>
</div>
</a>
我试过很多工作,但没有一件对我有效。有些人如下。
cy.xpath('/html/body/div[1]/div[1]/header/div[2]/a')
.should('have.attr', 'href').and('include', 'Preview')
.then((href) => {
cy.visit(href)
})
另一个工作区。
cy.xpath("/html/body/div[1]/div[1]/header/div[2]/a")
.first()
.should(($a) => {
$a.attr("target", "_self");
}).click();
我也试过这个。
cy.xpath("/html/body/div[1]/div[1]/header/div[2]/a")
.invoke("removeAttr", "target")
.click();
期待社区的回复。
3条答案
按热度按时间rfbsl7qr1#
下面的解决方案在我的情况下工作。
你可以在这里阅读更多关于这个解决方案的信息。https://glebbahmutov.com/blog/cypress-tips-and-tricks/#deal-with-windowopen
brtdzjyr2#
我不确定这样做是否有效,但由于
<a>
元素上没有href
,我假设新选项卡是由<button>
的onclick
处理程序打开的。我会首先对
onclick
进行重新编译,并Assert它被调用。然后,要在新选项卡URL处继续测试,请打开另一个测试并直接
cy.visit()
该URL。ux6nzvsh3#
当我遇到这个问题时,我将目标属性更改为_self。我不确定我的选择器是否会得到a元素。我不知道是否与类工具提示触发器的跨度是唯一的。