当前位置: 首页 > 知识库问答 >
问题:

如何使Nightwatch在页面对象文件中默认使用xpath

南宫勇军
2023-03-14

所有我的页面对象都是这样的:

  elements: {
      header: {
         locateStrategy: 'xpath',
         selector: "//h3[text()='Welcome']"
      },
      loginButton: {
         locateStrategy: 'xpath',
         selector: "//button[text()='Login']"
      },
      forgotPasswordLink: {
         locateStrategy: 'xpath',
         selector: "//a[text()='Forgot Password?']"
      },
      signupButton: {
         locateStrategy: 'xpath',
         selector: "//button[text()='Signup']"
      }

如果我能说“在任何地方都使用xpath”,那就更好了——这一切都会崩溃的

文档中说,您应该能够在“测试设置”中设置“use\u xpath”:true,但我已经在nightwatch中看到的所有地方尝试过了。json,它没有任何效果。

(在任何情况下,尚不完全清楚它们是否意味着此设置会影响页面对象文件中的声明:该示例仅显示它会影响测试用例中的子项断言调用)。

共有3个答案

史昀
2023-03-14

要绕过此问题,您可以在元素上循环,并为每个元素设置任何给定的定位策略,如下所示:

var pageObject = {
    url: 'https://google.com',
    elements: {
        myFirstElement: {
            selector: "//div[@class='my-first-el']"
        },
        mySecondElement: {
            selector: "//div[@class='my-seconds-el']"
        }
    }
};

for (var el in pageObject.elements){
    pageObject.elements[el]["locateStrategy"] = "xpath";
}
module.exports = pageObject;
阎渝
2023-03-14

尝试设置:

"use_xpath": true

在夜视中。conf.js文件,而不是夜间监视。json

为我工作:)

辛弘壮
2023-03-14

您可以这样使用javascript函数(取决于您最喜欢的创建对象的方式):

var xSelector = function (selector) {
    return {
        selector: selector,
        locateStrategy: 'xpath'
    }
};

然后像这样使用它:

elements: {

    xxx: xSelector('//a[text()="Bank Details"]')
    createStepButton: { selector: '#menu-create-item' },
}

提示:在上面的示例中,createStepButton仍在使用css选择器策略。还可以考虑创建cssSelector函数,以实现elements部分的统一可读性。

 类似资料:
  • 我安装了php5.6.6作为apache 2.4模块。 当加载带有 因此,正如文档所建议的,我编辑了httpd.conf指向php.ini配置文件(在C:\php56中)。我还添加了C:\php56到PATH和PHPRC环境变量。 由于我在这个文件夹中没有任何php.ini文件,我复制并重命名了“php.ini生产”文件,并编辑了扩展路径。 当我再次显示页面时,它将保持空白。。。下面是“php--

  • 我想将Nightwatch的页面对象系统用于我们应用程序中使用的UI组件。因为nightwatch有自己的读取/初始化它们的方式,所以我看不到正确扩展/重用它们的方法。 例如,我想要一个“日期字段”的DateInputPageObject。它将识别标签、输入、日期选择器等。 我会在任何带有日期输入字段的页面上使用它。 我还想扩展页面对象。例如,。将为所有模态元素定义选择器-覆盖、容器、关闭按钮等。

  • 问题内容: 我想在python 3.5的默认应用程序中打开文件,特别是在记事本中打开“ screen.txt”。 我已经搜索了互联网,并找到了大多数答案。我用文件的路径尝试了此操作,但返回了一个错误,提示“行继续符后出现意外字符”。我尝试了没有文件路径的尝试,只是文件名,但仍然无法正常工作。 这个错误是什么意思?我从未见过。 请提供打开有效的.txt文件的解决方案。 编辑:我在受限(学校)计算机上

  • 问题内容: 我的对象是: 函数的类别是: 当我尝试使用此功能时: 它不和我一起工作,有帮助吗?!!! 问题答案: 我用这个类来解决这个问题: 然后我用这个功能来使用它

  • 希望我不是第一个遇到这个问题的人。 问题是我还需要检查该元素在页面上是否可见,并且在执行checked之前它会出错(例如,使用WebDriverWait,将ExpectedConditions.ElementisVisible(by)传递给.Until方法)。 我如何将IWebElement和By locator清晰地分开,并允许在需要的地方进行这种明确的等待/检查? TLDR-如何维护页面对象模

  • 问题内容: 我想在JavaScript中打开文件浏览器,并为此文件浏览器设置默认目录。例如,我想将默认目录设置为“ C:\ My Documents”。 如何设置默认目录?最好使用,其他控件也可以。 问题答案: 这是不可能的,因为让网站代码在计算机上设置任何值都是安全隐患。 另外,您永远不能确保该目录存在。如果我使用Mac,该怎么办?我的东西进来了。如果我在Windows上安装了Windows,该