Javascript 如何使用UIVeri5与chrome headless中的对话框窗口交互

Javascript 如何使用UIVeri5与chrome headless中的对话框窗口交互,javascript,protractor,sapui5,uiveri5,Javascript,Protractor,Sapui5,Uiveri5,我正在为我的学士学位论文编写UIVeri5测试,遇到了Chrome无头浏览器的问题。我从普通的Chrome开始,在那里我可以只关注对话框弹出框,然后按下一个按钮,但由于某种原因,在headless模式下,没有找到按钮 我希望按下“后退”按钮,然后对话框弹出文本“是否要取消?”以及按钮“是”和“否”。然后按下“否”按钮 我已经尝试在代码中包含autowait:true和链式匹配器 it("should click on the back button and go back to creating

我正在为我的学士学位论文编写UIVeri5测试,遇到了Chrome无头浏览器的问题。我从普通的Chrome开始,在那里我可以只关注对话框弹出框,然后按下一个按钮,但由于某种原因,在headless模式下,没有找到按钮

我希望按下“后退”按钮,然后对话框弹出文本“是否要取消?”以及按钮“是”和“否”。然后按下“否”按钮

我已经尝试在代码中包含autowait:true和链式匹配器

it("should click on the back button and go back to creating", function() {
    element(by.control({
      controlType: "sap.m.Button",
      properties: {
        type: "Back"
      }
    })).click();

    element(by.control({
      controlType: "sap.m.Dialog",
      interaction: "focus"
    })).element(by.control({
      controlType: "sap.m.Button",
      autoWait: true,
      properties: {
        text: "No"
      }
    })).click();

    expect(browser.getCurrentUrl()).toEqual(x.afterHashtag(browser, "#/NewProductInfo"));
  });
我希望在按下“后退”按钮后,对话框会弹出并搜索对话框上的按钮


相反,控制台日志显示对话框在页面上找到并返回,然后所有按钮都在页面上找到,而不是在对话框窗口中找到。

如果我理解正确,如果您运行的是一个头部完整的chrome实例,上述代码会起作用,对吗?这只适用于无头车?如果是这样的话,听起来像是UIVeri5中的一个bug。@sebastianlinbach谢谢你的评论!这是正确的,所有的东西都在满头铬合金中运行良好,但在无头铬合金中则不行。我还认为这是UIVeri5中的一个bug,我将在github上打开一个问题。@2调试此类问题的第一步是查看屏幕截图报告中的屏幕截图。你看到你想点击的按钮了吗?@2Can,自动服务员总是启用的,实际上在uiveri5中没有办法禁用它,这是出于设计。所以这部分autoWait:true没有任何影响。实际上,控件选择器对象中不受支持的值很快就会抛出错误。@Max谢谢您的评论!为了澄清,我用德语编写了测试,因此将按钮上的文本称为“Nein”,意思是“否”。当我查看屏幕截图时,我意识到headless chrome会自动翻译为英语,而headless chrome不会。因此,如果我用英语进行测试,我的问题就解决了。再次感谢你的截图提示,它帮助了很多!