mocha.js - 无法使用 cypress 定位元素
问题描述
我正在使用对话流开发聊天机器人。所以为了测试它,我们正在使用 cypress。
下面是我的测试用例:
it('TC_01_Campaigns', () => {
cy.visit('https://<some-random-address>.com/');
cy.wait(4000);
//cy.contains('widgetIcon')
// cy.get('[id="widgetIcon"]')
// cy.get('button[id="widgetIcon"]').click();
cy.xpath('//*[@id="widgetIcon"]')
})
我已经尝试了注释掉的代码行。它似乎不起作用。
下面是 DOM 的 html 代码:
<html><head><script src="https://static.dialogflow.com/common/messenger/webcomponentsjs/2.1.3/custom-elements-es5-adapter.js"></script><script src="https://static.dialogflow.com/common/messenger/webcomponentsjs/2.1.3/webcomponents-loader.js"></script><style type="text/css">:root{--df-messenger-bot-message:#fff;--df-messenger-button-titlebar-color:#42a5f5;--df-messenger-button-titlebar-font-color:#fff;--df-messenger-chat-background-color:#fafafa;--df-messenger-font-color:rgba(0,0,0,.87);--df-messenger-input-box-color:#fff;--df-messenger-input-font-color:rgba(0,0,0,.87);--df-messenger-input-placeholder-font-color:#757575;--df-messenger-minimized-chat-close-icon-color:rgba(0,0,0,.87);--df-messenger-send-icon:#42a5f5;--df-messenger-user-message:#ddd;--df-messenger-chip-color:#fff;--df-messenger-chip-border-color:#e0e0e0}</style><link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"><link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet"></head><body>
<h1>Chatbot</h1>
<div style="position: absolute; bottom: 0px; right: 5px;">
<script src="https://www.gstatic.com/dialogflow-console/fast/messenger/bootstrap.js?v=1"></script>
<df-messenger chat-title="BR" agent-id="xxxx-xxx-xxxx-xxxx-xxxxx" language-code="en" session-id="dfMessenger-43967287" api-uri="https://dialogflow.cloud.google.com/v1/integrations/messenger/webhook"></df-messenger>
</div>
<script src="https://www.gstatic.com/dialogflow-console/fast/messenger/messenger-internal.min.js?v=4"></script></body></html>
解决方案
您能否发布在尝试代码时收到的错误消息?这可能会有所帮助。
如果没有错误消息,我只能猜测 - 这可能是因为#shadow-root
. 在Cypress 4.8.0中添加了对测试影子根的支持。查看.shadow() 的文档和描述。更新到 Cypress 4.8.0 或更高版本,尝试将其添加到您的配置中,然后尝试获取元素:
{
"experimentalShadowDomSupport": true
}
另外,在 Cypress 的 GitHub 上查看这个已关闭的问题。希望能帮助到你!
推荐阅读
- android - Android Studio - 从菜单项中的对话框片段更新 RecyclerView
- reactjs - 如何在反应中创建级联下拉列表
- jquery - 使用 jQuery 遍历 Javascript 数组并将行追加到 html 表中——
- android - 逐字符比较 2 个文本框值
- python - Python 输出编码
- css - 使用圆形点自定义 jQuery ui 滑块
- javascript - d3 访问器函数迭代
- node.js - 我正在使用 Angular 在控制台中获取数据,但我无法在 html 中呈现它
- java - 通过 WhatsApp 共享原始资源(无 SD 卡)
- ios - 从 JSON 解码后访问对象属性时崩溃