所以,我试图在输入字段中输入文本时遇到问题,但我意识到,两个具有相同ID名称的相同ID,我在这里寻求有关如何指定哪个div->输入的帮助我想使用。
我到目前为止所做的是:
it('Entering First Name', function (done) {
browser.driver
.then(() => browser.wait(EC.visibilityOf(element(by.xpath('//input[@id="pp-cc-first-name-field"]'))), 50000, "Timed out finding 'First Name' element"))
.then(() => element(by.xpath('//input[@id="pp-cc-first-name-field"]')).sendKeys("hello world")
.then(() => done());
});
使用此HTML
所以我不确定在这种情况下我实际上在做什么错,因为现在它什么也没输入,并且由于超时而失败。我希望将任何文本输入此特定元素。
编辑!
看来我不得不切换到iframe,因为在后台加载了一个iframe,这就是我无法在字段上实际写的原因。我不得不使用
browser.switchTo().frame(element(by.xpath("//iframe[@id='cc-integrated-payment-page-frame']")).getWebElement()))
以便能够在字段内写。
您的元素的ID不同,<div>
的值为pp-cc-first-name-field
,<input>
的值为pp-cc-first-name-field
。尝试如下修复它:
it('Entering First Name', function (done) {
browser.driver
.then(() => browser.wait(EC.visibilityOf(element(by.id('pp-cc-first-name'))), 50000, "Timed out finding 'First Name' element"))
.then(() => element(by.id('pp-cc-first-name')).sendKeys("hello world")
.then(() => done());
});
要在输入字段中输入字符序列,可以使用以下Locator Strategies之一:
使用css_selector
:
input#pp-cc-first-name[name='First name'][placeholder='First name']
使用xpath
:
//input[@id='pp-cc-first-name' and @name='First name'][@placeholder='First name']
有效地,您修改后的代码块将是:
it('Entering First Name', function (done) {
browser.driver
.then(() => browser.wait(EC.visibilityOf(element(by.xpath('//input[@id="pp-cc-first-name" and @name="First name"][@placeholder="First name"]'))), 10, "Timed out finding 'First Name' element"))
.then(() => element(by.xpath('//input[@id="pp-cc-first-name" and @name="First name"][@placeholder="First name"]')).sendKeys("hello world")
.then(() => done());
});