Selenium - Как отправить вход из div> вход по идентификатору? - PullRequest
0 голосов
/ 24 января 2020

Таким образом, у меня возникла проблема, когда я пытаюсь ввести текст в поле ввода, но я понял, что есть два одинаковых идентификатора с одинаковым именем идентификатора, и я здесь ищу справку о том, как указать, какой 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

Так что я не уверен, что я на самом деле делаю неправильно в этом случае, потому что сейчас он ничего не вводит и дает сбой из-за истечения времени ожидания. Я хотел бы wi sh для ввода любого текста в этот элемент c.

РЕДАКТИРОВАТЬ!

Похоже, мне пришлось переключиться на iframe из-за загруженного iframe на фоне, который был причиной, по которой я не смог написать на поле. Я должен был использовать

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

, чтобы иметь возможность писать внутри полей.

Ответы [ 2 ]

1 голос
/ 24 января 2020

Чтобы ввести последовательность символов в поле ввода, вы можете использовать одну из следующих Стратегий локатора :

  • Использование 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());
});
1 голос
/ 24 января 2020

Идентификаторы ваших элементов не совпадают, <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());
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...