【问题标题】:How to click a button post 5 seconds after entering data in selenium web driver using node.js如何在使用 node.js 在 selenium Web 驱动程序中输入数据后 5 秒单击按钮发布
【发布时间】:2018-09-18 23:34:48
【问题描述】:

我有一个支付页面,我在其中输入我的卡详细信息并点击“支付”按钮。但是,当我将 selenium Web 驱动程序与 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();

【问题讨论】:

  • 你试过用javascript点击元素吗?

标签: javascript node.js selenium-webdriver callback promise


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 2018-01-30
    相关资源
    最近更新 更多