Wednesday, 10 May 2017

javascript + Selenium WebDriver cannot load list of followers in instgram

I am learning JavaScript,node.js and Selenium Web Driver. As part of my education process I am developing simple bot for Instagram. To emulate browser I use Chrome web driver. Faced problem when trying to get list of followers and amount of followers for the account:

This code opens instagram page, enters credentials, goes to some account and opens followers for this account. Data like username and password I take from the settings.json.

var webdriver = require('selenium-webdriver'),
by = webdriver.By,
Promise = require('promise'),
settings = require('./settings.json');

var browser = new webdriver
    .Builder()
    .withCapabilities(webdriver.Capabilities.chrome())
    .build();

browser.manage().window().setSize(1024, 700);
browser.get('https://www.instagram.com/accounts/login/');
browser.sleep(settings.sleep_delay);
browser.findElement(by.name('username')).sendKeys(settings.instagram_account_username);
browser.findElement(by.name('password')).sendKeys(settings.instagram_account_password);
browser.findElement(by.xpath('//button')).click();
browser.sleep(settings.sleep_delay);

browser.get('https://www.instagram.com/SomeAccountHere/');
browser.sleep(settings.sleep_delay);
browser.findElement(by.partialLinkText('followers')).click();

This part should open all followers, but not working:

var FollowersAll = browser.findElement(by.className('_4zhc5 notranslate _j7lfh'));

Tried also by xpath:

var FollowersAll = browser.findElement(by.xpath('/html/body/div[2]/div/div[2]/div/div[2]/ul/li[3]/div/div[1]/div/div[1]/a'));

When I run in the browser's console:

var i = document.getElementsByClassName('_4zhc5 notranslate _j7lfh');

it is working fine.

I run code in debug mode (use WebStorm) and it shows in each case that variable "FollowersAll" is undfined. The same happens when I try to check amount of followers for the account.

Thanks in adavnce.



via Vindi4i

No comments:

Post a Comment