【问题标题】:Trying to use XPath for auto testing in (fillField)尝试在 (fillField) 中使用 XPath 进行自动测试
【发布时间】:2013-08-27 10:43:15
【问题描述】:

尝试测试一些字段,当我检查“检查元素”以识别字段的 ID 或名称时,但只有一个类不起作用,所以我决定使用 XPath,例如:

$I->fillField('/html/body/div/form/div[2]/div[3]/div/div[1]/label/span[1]','GRV');

并得到失败和错误:

1) Couldn't sign in in Authorization  
Ups, I couldn't fill field "/html/body/div/form/div[2]/div[3]/div/div[1]/label/s
pan[1]","blabla",
Field by name, label, CSS or XPath '/html/body/div/form/div[2]/div[3]/div/div[1]
/label/span[1]' was not found on page.

我检查了几次 XPath,无法测试此字段。如果您能说出什么问题以及如何解决它,那就太好了。

【问题讨论】:

    标签: javascript xpath automated-tests codeception


    【解决方案1】:

    您尝试填充标签,而不是输入元素:

    //label/span[1]
    

    请务必选择您要填写的输入字段。如果您的标签具有值为“foo”的 for 属性,请查找 <input id="foo"/>

    【讨论】:

    • 不,我只是在示例 xpath 中犯了错误。真的,我正在寻找像 '//span/input[1]' 这样的 xapth 无论如何,codeception 会生成类似 Unable to locate element: {"method":"xpath","selector":"//html"}
    • 我认为这正是我要写的内容。您的 HTML 看起来如何?
    【解决方案2】:

    好吧,避免使用这种 XPath。实在是太啰嗦了。你只是打破了你的想法,我们也试图解决它:) 只需将#id 选择器添加到你正在匹配的元素中并快乐。

    使用这种 XPath 的测试会在页面的每次标记更改时中断。为什么需要一个如此难以维护的测试?

    【讨论】:

    • 当然我们可以将#id 选择器添加到元素中,但这将是最后一个选项。我们尝试使用长短“//” XPath 进行测试,两者都不起作用。尽管 Codeception 也必须用 XPath 很好地测试,但问题出在哪里以及如何用 XPath 解决。
    猜你喜欢
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    相关资源
    最近更新 更多