Javascript 柏树-如何通过文本内容查找?
在Cypress中,我想根据按钮的文本内容从一组按钮中选择一个按钮。我怎么做?我的做法如下:Javascript 柏树-如何通过文本内容查找?,javascript,cypress,end-to-end,Javascript,Cypress,End To End,在Cypress中,我想根据按钮的文本内容从一组按钮中选择一个按钮。我怎么做?我的做法如下: export const getCustomerButton = () => getNavigationSidenav() .find('mat-expansion-panel-header') .each(($el, index, $list) => { const text = $el.find('.mat-content > mat-panel-title').t
export const getCustomerButton = () => getNavigationSidenav()
.find('mat-expansion-panel-header')
.each(($el, index, $list) => {
const text = $el.find('.mat-content > mat-panel-title').text();
if (text === 'Customer') {
return $el;
}
return null;
});
现在的问题是我必须从元素数组中过滤掉空值。有没有一种不那么复杂的方法?这将生成包含文本“Customer”的DOM元素,其中包含
YOUR\u BUTTON\u类。这就是你要找的吗
cy.get('YOUR_BUTTON_CLASS')。包含('Customer');
对于。包含
cypress命令。或者更巧妙的解决方案是使用以下命令:
cy.contains('YOUR_BUTTON_CLASS','Customer');
这是因为contains()
可以容纳2个参数。如果它有两个参数,第一个总是元素,第二个是文本。前面的答案中没有提到的另一个选项
使用
安装完成后,只需将其导入cypress'commands.js
:
import'@testing library/cypress/add命令'
在你的测试中
cy.findAllByText(“成龙”)。单击();
cy.findByText(“按钮文本”)。应(“存在”);
cy.findByText(“不存在的按钮文本”)。应(“不存在”);
cy.findByLabelText(“标签文本”,{timeout:7000})。应(“存在”);
在(()=>{
cy.findByText(“按钮文本”)。应(“存在”);
});
然后((主题)=>{
cy.findByText(“按钮文本,{container:subject}”)。应该(“存在”);
});
这是非常简单和易于使用的。我们在生产站点和react测试库中使用它。强烈推荐:)公认的答案“可以”起作用。但是:如果元素在第一次尝试时不可见,则在随后的重试中找不到该元素
见:
Cypress使用“Sizzle”作为选择器库-因此:
cy.get('button:contains(“FooBar”))
可以重试。您有可以显示的HTML吗。我知道您已经得到了答案,但是您尝试选择的一些内容会有所帮助。请注意,像这样的链接命令可能会导致连锁反应,因为get
在找到某个内容后不会重试,即使它找到的元素中没有一个包含“Customer”(请参阅)只是执行cy.get('Customer'))
将尝试生成一个元素客户,而这不是我们所需要的。这是我将要使用的-谢谢提示!我只是想知道在安装这个插件之前,是否会cy.findByText('Button')。click()
产生与内置命令cy.contains('Button')相同的结果。click()
。如果没有,区别是什么?我做了一个快速测试,返回的按钮看起来略有不同,看到了吗,但它们都正常工作