我的夜班表来自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元素。
对此问题的任何帮助都将不胜感激。
答案 0 :(得分:0)
Nightwatch正在寻找#AnswerInput
,好像它是一个xpath选择器。在.useXpath()
之后,您必须切换回使用带.useCss()
的CSS。
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');
答案 1 :(得分:0)
您需要使用.useCss()
命令将选择器的定位策略设置回 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')