Link 在 iframe 中点击 Testcafe 时不工作
Link not working when clicked by Testcafe inside iframe
我正在尝试在我们的演示商店中设置一些简单的验证。
它一直有效,直到单击 "genomför köp"(进行购买)link。
link 标记为已单击(颜色变化),但未执行正确的操作,您留在同一侧。
如果您在 "await t.click('#purchase-button');" 行之后添加调试行,您可以手动单击 link,您可以将鼠标悬停在 link 上,以便 testcafe 找到它。但是由于某些原因,click() 不起作用。
编辑:1:我正在使用的 OS 是 WIn10,运行 testcafe 1.8.2 在 phpstorm 2019.3.3 下并用 "testcafe chrome *.js"
调用它
如有任何帮助,我们将不胜感激。
/克里斯托弗
相关代码如下,demoshop开放使用
fixture`demoshop.resurs.com`
.page(https://demoshop.resurs.com);
test(
'Run: demoshop.resurs.com', async t => {
await t
.click('.home-shop-now')
.click('#root > div > main > div > div.container > div.products-container.mb-60 > div:nth-child(1) > a > img')
.click('#root > div > main > div > div > div.product-detail__container > div.product-detail__info-container > div.product-detail__add-to-cart > div > button')
.click('#root > div > main > div > span > header > div > div > div > span.shopping-bag-icon.clickable > div')
.click('#root > div > main > div > span > div > div > div > div.shopping-cart-container > a');
await t.switchToIframe('iframe');
await t.click('#purchase-button'); //This does not work properly
await t.expect(Selector('h2').innerText).contains('Tack för din order!');
}
);
我能够通过 TestCafe@1.8.2 重现该问题,但测试在 TestCafe@1.8.4 中按预期工作。
我建议您更新到最新的 TestCafe 版本并应用@DmitryOstashev 提供的更改:
import { Selector } from 'testcafe';
fixture`demoshop.resurs.com`
.page('https://demoshop.resurs.com');
test(
'Run: demoshop.resurs.com', async t => {
await t
.click('.home-shop-now')
.click('#root > div > main > div > div.container > div.products-container.mb-60 > div:nth-child(1) > a > img')
.click('#root > div > main > div > div > div.product-detail__container > div.product-detail__info-container > div.product-detail__add-to-cart > div > button')
.click('#root > div > main > div > span > header > div > div > div > span.shopping-bag-icon.clickable > div')
.click('#root > div > main > div > span > div > div > div > div.shopping-cart-container > a');
await t.switchToIframe('iframe');
await t.click('#purchase-button');
await t.switchToMainWindow();
await t.expect(Selector('h2').innerText).contains('Tack för din order!');
}
);
我正在尝试在我们的演示商店中设置一些简单的验证。 它一直有效,直到单击 "genomför köp"(进行购买)link。 link 标记为已单击(颜色变化),但未执行正确的操作,您留在同一侧。 如果您在 "await t.click('#purchase-button');" 行之后添加调试行,您可以手动单击 link,您可以将鼠标悬停在 link 上,以便 testcafe 找到它。但是由于某些原因,click() 不起作用。
编辑:1:我正在使用的 OS 是 WIn10,运行 testcafe 1.8.2 在 phpstorm 2019.3.3 下并用 "testcafe chrome *.js"
调用它如有任何帮助,我们将不胜感激。 /克里斯托弗
相关代码如下,demoshop开放使用
fixture`demoshop.resurs.com`
.page(https://demoshop.resurs.com);
test(
'Run: demoshop.resurs.com', async t => {
await t
.click('.home-shop-now')
.click('#root > div > main > div > div.container > div.products-container.mb-60 > div:nth-child(1) > a > img')
.click('#root > div > main > div > div > div.product-detail__container > div.product-detail__info-container > div.product-detail__add-to-cart > div > button')
.click('#root > div > main > div > span > header > div > div > div > span.shopping-bag-icon.clickable > div')
.click('#root > div > main > div > span > div > div > div > div.shopping-cart-container > a');
await t.switchToIframe('iframe');
await t.click('#purchase-button'); //This does not work properly
await t.expect(Selector('h2').innerText).contains('Tack för din order!');
}
);
我能够通过 TestCafe@1.8.2 重现该问题,但测试在 TestCafe@1.8.4 中按预期工作。
我建议您更新到最新的 TestCafe 版本并应用@DmitryOstashev 提供的更改:
import { Selector } from 'testcafe';
fixture`demoshop.resurs.com`
.page('https://demoshop.resurs.com');
test(
'Run: demoshop.resurs.com', async t => {
await t
.click('.home-shop-now')
.click('#root > div > main > div > div.container > div.products-container.mb-60 > div:nth-child(1) > a > img')
.click('#root > div > main > div > div > div.product-detail__container > div.product-detail__info-container > div.product-detail__add-to-cart > div > button')
.click('#root > div > main > div > span > header > div > div > div > span.shopping-bag-icon.clickable > div')
.click('#root > div > main > div > span > div > div > div > div.shopping-cart-container > a');
await t.switchToIframe('iframe');
await t.click('#purchase-button');
await t.switchToMainWindow();
await t.expect(Selector('h2').innerText).contains('Tack för din order!');
}
);