如何在特定选择器中使用expect



我正在研究使用capybaracucumberwebdriver的自动化测试

我使用expect进行测试,通常使用expect(page).to have_selector('p', 'some cool text')来查找元素,但有时它碰巧有多个类似的选择器,有时过一段时间就会加载。

为了简化我想说的内容,我将把一个html方案放在一起,以演示我试图找到的内容。

setTimeout(function(){
document.getElementById('alpha').innerHTML = 'some cool text';
},3000)
<p style="background: rgba(255,0,0,0.1)">This text will load 
<p id="alpha">Text to load after 3s</p>
<p style="background: rgba(255,0,0,0.1)">similar text that I don't want to find</p>
<p>some cool text</p>

我需要知道如何只选择第一个文本来验证单词'some cool text'是否已加载,添加id或类是受欢迎的

您编写的语句没有达到预期效果,因为您只是将"一些很酷的文本"作为参数而不是文本选项传递。你想要的是

expect(page).to have_selector('p#alpha', text: 'some cool text')

它将等待长达CCD_ 6秒,等待id为"alpha"的包含文本"some cool text"的p元素出现。默认情况下,Capybara.default_max_wait_time是2秒,所以如果你的页面上有很多事情需要3秒以上的时间,你可能想增加它。如果只有这一个,您可以通过密码wait选项来延长特定呼叫的最大等待时间

expect(page).to have_selector('p#alpha', text: 'some cool text', wait: 5)

此外,如果我是你,当你知道你在使用CSS 时,我会使用have_css而不是have_selector

expect(page).to have_css('p#alpha', text: 'some cool text', wait: 5)

相关内容

  • 没有找到相关文章

最新更新