Как нажать кнопку через 5 секунд после ввода данных в веб-драйвер селена с помощью node.js - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть платежная страница, на которой я ввожу данные своей карты и нажимаю кнопку «Оплатить». Но когда я использую веб-драйвер селена с node.js, мою кнопку нажимают очень быстро даже до ввода данных, и я получаю обязательные проверки полей. Ниже приведен мой код. Я попробовал driver.sleep, но он не сработал. Как я могу ждать 2 или 3 секунды после ввода моих данных, прежде чем нажать кнопку. Пожалуйста, сообщите.

    var webdriver = require('selenium-webdriver'),
        By = webdriver.By,
        until = webdriver.until;

    var driver = new webdriver.Builder()
        .forBrowser('firefox')
        .build();

    //calling enterCardDetails function
    enterCardDetails(driver);

   //function to enter card details
    function enterCardDetails(driver) {

    driver.get('https://pp.eshapay.net/THREER/pages/paypage.jsf?transref=86ffeef6-0f2b-45bb-9dd6-a5e210dad1b6&store=100017');

    driver.wait(
        until.elementLocated(By.id('paymentDetailsTitle')), 
        20000
      );

      driver.findElement(By.id('cardholderName')).sendKeys('johny');
      driver.findElement(By.id('cardNumber')).sendKeys('4444333322221111');


      driver.wait(
        until.elementLocated(By.id("expiryMonth")), 20000
    ).then(element => {
        selectFromDropdown(element, "02")
    });

    //function to select value from dropdown
    function selectFromDropdown(select, textDesired) {
        select.findElements(By.tagName('option'))
        .then(options => {
            options.map(option => {
                option.getText().then(text => {
                    if (text == textDesired)
                        option.click();
                });
            });
        });
    }

    driver.wait(
        until.elementLocated(By.id("expiryYear")), 20000
    ).then(element => {
        selectFromDropdown(element, "2020")
    });

    driver.findElement(By.id('csc')).sendKeys('123');

    }
//driver.findElement(By.id('btnSubmit')).click();

1 Ответ

0 голосов
/ 18 сентября 2018

Либо перейдите на Thread.sleep (5000), который я не рекомендую, либо, прежде чем нажать кнопку «Оплатить», попробуйте получить значение из текстового поля «Сведения о карте», проверьте, не пусто ли оно, и нажмите кнопку «Оплатить».

...