如何在特定选择器中使用 expect?
How do I use expect in a specific selector?
我正在研究 capybara
、cucumber
和 webdriver
的自动化测试
我是用expect做测试,一般都是用expect(page).to have_selector('p', 'some cool text')
找一个元素,但是有时候恰好有多个类似的selector,有时候最后是一段时间后加载。
为了简化我要说的内容,我将整理一个 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>
我需要知道如何 select 只有第一个文本来验证单词 'some cool text'
已加载,欢迎添加 id 或 类
您编写的语句没有达到您的预期,因为您只是将 'some cool text' 作为参数而不是文本选项传递。你想要的是
expect(page).to have_selector('p#alpha', text: 'some cool text')
这将等待最多 Capybara.default_max_wait_time
秒,以显示包含文本 'some cool text' 的 ID 为 'alpha' 的 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)
我正在研究 capybara
、cucumber
和 webdriver
我是用expect做测试,一般都是用expect(page).to have_selector('p', 'some cool text')
找一个元素,但是有时候恰好有多个类似的selector,有时候最后是一段时间后加载。
为了简化我要说的内容,我将整理一个 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>
我需要知道如何 select 只有第一个文本来验证单词 'some cool text'
已加载,欢迎添加 id 或 类
您编写的语句没有达到您的预期,因为您只是将 'some cool text' 作为参数而不是文本选项传递。你想要的是
expect(page).to have_selector('p#alpha', text: 'some cool text')
这将等待最多 Capybara.default_max_wait_time
秒,以显示包含文本 'some cool text' 的 ID 为 'alpha' 的 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)