使用node.js在selenium web驱动程序中输入数据后5秒钟如何单击按钮

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

我有一个付款页面,在其中输入我的卡详细信息,然后单击“付款”按钮。但是当我使用带有node.js的selenium web驱动程序时,即使在输入数据之前我的按钮也会非常快速地点击,我得到了我的强制字段验证。下面是我的代码。我试过了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();
javascript node.js selenium-webdriver callback promise
1个回答
0
投票

要么转到我不推荐的Thread.sleep(5000),要么在点击Pay按钮之前尝试从卡详细信息文本框中获取值,检查它是否为空,然后单击Pay按钮。

© www.soinside.com 2019 - 2024. All rights reserved.