夜班后使用Xpath使用不能setValue

问题描述 投票:0回答:2

我的夜班表来自vue-cli webpack模板。我的问题是在使用xpath nightwatch后丢失上下文并且找不到存在的元素。

例子(作品):

client.setValue('#NameInput', 'FirstName');
client.setValue('#MiddleNameInput', 'MiddleName');
client.setValue('#LastNameInput', 'LastName');
client.setValue('#AnswerInput', 'ChallengeAnswer');
client.useXpath().click("//option[contains(text(), 'Driver License')]");

示例(不起作用):

client.setValue('#NameInput', 'FirstName');
client.setValue('#MiddleNameInput', 'MiddleName');
client.setValue('#LastNameInput', 'LastName');
client.useXpath().click("//option[contains(text(), 'Driver License')]");
client.setValue('#AnswerInput', 'ChallengeAnswer');

找不到#AnswerInput元素。

任何有关此问题的帮助将不胜感激。

javascript nightwatch.js
2个回答
0
投票

Nightwatch正在寻找#AnswerInput,好像它是一个xpath选择器。在你.useXpath()之后,你必须切换回使用CSS与.useCss()

client.setValue('#NameInput', 'FirstName');
client.setValue('#MiddleNameInput', 'MiddleName');
client.setValue('#LastNameInput', 'LastName');
client.useXpath().click("//option[contains(text(), 'Driver License')]");
client.useCss().setValue('#AnswerInput', 'ChallengeAnswer');

0
投票

您需要使用.useCss()命令将选择器的locate策略设置回css选择器。 Nightwatch默认为css选择器。

client.setValue('#NameInput', 'FirstName');
client.setValue('#MiddleNameInput', 'MiddleName');
client.setValue('#LastNameInput', 'LastName');
client.useXpath().click("//option[contains(text(), 'Driver License')]").useCss();
client.setValue('#AnswerInput', 'ChallengeAnswer');

为了帮助解决使用哪种定位策略的问题,我通常会将这些命令单独放在一行上。

client
    .setValue('#NameInput', 'FirstName')
    .setValue('#MiddleNameInput', 'MiddleName')
    .setValue('#LastNameInput', 'LastName')
    .useXpath()
    .click("//option[contains(text(), 'Driver License')]")
    .useCss()
    .setValue('#AnswerInput', 'ChallengeAnswer')
© www.soinside.com 2019 - 2024. All rights reserved.