Selenium JS: Stripe paymet: Error: ECONNREFUSED connect ECON



我写了这个脚本在我的网站上运行。它应该填写一些表格,然后按下支付按钮,之后,它将等待Stripe支付页面,然后填写卡信息并继续进行。

但问题是自动化工作在我的网站结束时,它击中支付按钮,去条纹结束,自动化停止工作,并抛出这个错误,

错误:ECONNREFUSED connect ECONNREFUSED 127.0.0.1:49383在ClientRequest。(//node_modules/selenium-webdriver/http/index.js: 273:15)

(node:61074) UnhandledPromiseRejectionWarning: Error: ECONNREFUSED连接ECONNREFUSED 127.0.0.1:49383在ClientRequest。(//node_modules/selenium-webdriver/http/index.js: 273:15)

(node:61074) UnhandledPromiseRejectionWarning:未处理的承诺被拒绝。此错误是由抛出async内部引起的函数而不使用catch块,或者通过拒绝一个被不能用.catch()处理。(reject id: 2) (node:61074) [DEP0018]DeprecationWarning:未处理的承诺拒绝已弃用。在未来,未处理的承诺拒绝将终止退出码非零的Node.js进程。

脚本:

const {Builder, Key, By, Capabilities} = require('selenium-webdriver');
(async function makeDonation() {
let driver = await new Builder().forBrowser('chrome').build();

await driver.get('<URL>');
// step 2 - fill out the form and proceed
await driver.findElement(By.css('#support > div > div > div > form > div:nth-child(1) > input')).sendKeys('Test');
await driver.findElement(By.css('#support > div > div > div > form > div:nth-child(2) > input')).sendKeys('test@test.com');
await driver.findElement(By.css('#support > div > div > div > form > div:nth-child(3) > textarea')).sendKeys('Test', Key.TAB);
await driver.sleep(500);
await driver.findElement(By.css('<element>')).click();
// step 3 - agree to pay
let title_1 = await driver.getTitle();
console.log(title_1);
await driver.sleep(1000);
await driver.findElement(By.css('#body > div.ReactModalPortal > div > div > div > div.d-flex.flex-column.justify-content-center.p-5 > form > button')).click();
// step 4 - fill out the payment info on Stripe
await driver.sleep(5000);
const value = await driver.getTitle();
console.log(value);
await driver.findElement(By.css('#email')).sendKeys('email@email.com');
await driver.findElement(By.css('#cardNumber')).sendKeys('4242424242424242');
await driver.findElement(By.css('#cardExpiry')).sendKeys('0125');
await driver.findElement(By.css('#cardCvc')).sendKeys('000');
await driver.findElement(By.css('#billingName')).sendKeys('Name');
await driver.findElement(By.css('#root > div > div > div.App-Payment > div > form > div:nth-child(2) > div:nth-child(4) > button > div.SubmitButton-IconContainer')).click();
// final step - Expect the success page
} catch (e) {
console.error(e);
} finally {
driver.quit();
}
})();

注意:从开始到步骤3,它只是工作良好。当它开始执行步骤4时,它停止工作。

已解决:我在无头模式下运行Chromedriver,发现问题已解决

const {Builder, Key, By, Capabilities} = require('selenium-webdriver');
const chromeCapabilities = Capabilities.chrome();
chromeCapabilities.set('chromeOptions', {args: ['--headless']});
let driver = new Builder().forBrowser('chrome').withCapabilities(chromeCapabilities).build();

最新更新