Selenium-如何从div发送输入>通过id输入?

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

所以,我试图在输入字段中输入文本时遇到问题,但我意识到,两个具有相同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

enter image description here

所以我不确定在这种情况下我实际上在做什么错,因为现在它什么也没输入,并且由于超时而失败。我希望将任何文本输入此特定元素。

编辑!

看来我不得不切换到iframe,因为在后台加载了一个iframe,这就是我无法在字段上实际写的原因。我不得不使用

browser.switchTo().frame(element(by.xpath("//iframe[@id='cc-integrated-payment-page-frame']")).getWebElement()))

以便能够在字段内写。

javascript selenium protractor mocha chai
2个回答
0
投票

您的元素的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());
});

0
投票

要在输入字段中输入字符序列,可以使用以下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());
});
© www.soinside.com 2019 - 2024. All rights reserved.