我有一个付款页面,在其中输入我的卡详细信息,然后单击“付款”按钮。但是当我使用带有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();
要么转到我不推荐的Thread.sleep(5000),要么在点击Pay按钮之前尝试从卡详细信息文本框中获取值,检查它是否为空,然后单击Pay按钮。