[FIX] New selectors to detect QR code and auth success

This commit is contained in:
Pedro Lopez
2019-05-29 22:06:38 -04:00
parent 5525301970
commit 48a9d7d7f7

View File

@@ -44,10 +44,12 @@ class Client extends EventEmitter {
await page.goto(WhatsWebURL);
const KEEP_PHONE_CONNECTED_IMG_SELECTOR = '._1wSzK';
if(this.options.session) {
// Check if session restore was successfull
try {
await page.waitForSelector('._2Uo0Z', {timeout: 5000});
await page.waitForSelector(KEEP_PHONE_CONNECTED_IMG_SELECTOR, {timeout: 5000});
} catch(err) {
if(err.name === 'TimeoutError') {
this.emit(Events.AUTHENTICATION_FAILURE, 'Unable to log in. Are the session details valid?');
@@ -61,12 +63,17 @@ class Client extends EventEmitter {
} else {
// Wait for QR Code
await page.waitForSelector('._1jjYO');
const qr = await page.$eval('._2EZ_m', node => node.getAttribute('data-ref'));
const QR_CONTAINER_SELECTOR = '._2d3Jz';
const QR_VALUE_SELECTOR = '._1pw2F';
await page.waitForSelector(QR_CONTAINER_SELECTOR);
const qr = await page.$eval(QR_VALUE_SELECTOR, node => node.getAttribute('data-ref'));
this.emit(Events.QR_RECEIVED, qr);
// Wait for code scan
await page.waitForSelector('._2Uo0Z', {timeout: 0});
await page.waitForSelector(KEEP_PHONE_CONNECTED_IMG_SELECTOR, {timeout: 0});
}
await page.evaluate(ExposeStore);