3

我的网站上有一个奇怪的 TestCafe 行为。我在一个站点上有两个复选框和一个按钮,一旦我点击它,我就会进入下一步。当页面加载时,de 按钮是可见的并且在任何时候都不会被操纵。

这是按钮的标记:

<button id="confirmation-submit" type="submit" class="btn btn-success pull-right hidden-xs">
     <span class="glyphicon glyphicon-flag"></span>
     order now
</button>

这是我的代码的样子(这个问题的相关部分):

const submitOrderBtn = Selector('button[type="submit"].btn-success');
//const submitOrderBtn = Selector('#confirmation-submit');

test('complete order', async t =>{
     await t
          .click(submitOrderBtn)

在 chrome 中,它向我展示了这张图片:

在此处输入图像描述

命令行的输出是这样的: 在此处输入图像描述

该按钮始终可见,即使我使用开发人员工具查看网站时,该按钮也在那里,并且它具有我想要单击的 ID(确认提交)。

我怎样才能解决这个问题?在其他页面上,我可以毫无问题地使用 .click 功能。

4

2 回答 2

1

display: hidden正如@Andrey Belym 在他的评论中提到的那样,如果元素的宽度或高度具有非零值并且没有使用和等 CSS 属性隐藏,TestCafe 将考虑元素可见visibility: none

你可以在 DevTools 的 Computed CSS Properties 中查看它。在您的情况下,#confirmation-button可能是隐藏在实际可见元素中某处的不可见按钮。

此外,您可以尝试使用resizeWindow操作调整浏览器窗口的大小。如果您的布局是自适应的或者是滚动问题,这可能会有所帮助。

于 2019-01-02T12:37:37.500 回答
1

作为一种解决方法,您可以尝试单击按钮父容器:

const submitOrderBtn = Selector('#confirmation-submit');
const confirmSelector = submitOrderBtn.parent();
test('complete order', async t =>{
     await t
          .click(confirmSelector)

如果这对直接父母不起作用,您可以尝试div像这样获取第一个父母:

const submitOrderBtn = Selector('#confirmation-submit');
    const confirmSelector = submitOrderBtn.parent('div');
    test('complete order', async t =>{
         await t
              .click(confirmSelector)
于 2019-01-02T17:34:31.340 回答