【发布时间】:2018-11-21 21:15:48
【问题描述】:
我正在使用 Selenium 在 Instagram 页面中查找元素。
我已成功登录并加载了用户个人资料,但无法加载他们的以下框。
当您在浏览器中单击以下链接时,它会加载一个框,您可以滚动查看以下列表。
当使用 selenium 时,我做了以下 -
var opt = new PhantomJSOptions();
opt.AddAdditionalCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36");
var driver = new PhantomJSDriver(driverService, opt);
var element = driver.FindElementByName("username");
element.SendKeys(userName);
element = driver.FindElementByName("password");
element.SendKeys(passWord);
// find the login button and click it after credentials have been populated
element = driver.FindElement(By.XPath("//button[.='Log in']"));
element.Click();
// Now navigate to the users page
driver.Navigate().GoToUrl("https://www.instagram.com/" + accName);
在这个阶段我已经成功登录,在用户页面上,可以找到以下链接并点击它-
var element = driver.FindElementByPartialLinkText("following");
element.Click();
然而,在点击事件中,这奇怪地把我带回了 Instagram 的主登录页面。
我注意到的另一件事是,如果您在浏览器中并单击链接,浏览器中的 url 会更新为 -
https://www.instagram.com/{username}/following/
但是,如果您复制此链接并将其粘贴到新窗口并尝试导航到它,它不会像我预期的那样自动加载以下框,而只会将您带到用户主页。
我在 python 中找到了人们似乎成功使用点击事件的示例,例如example of using python.
如何使用 C# 实现这一点?我不确定 Instagram 是否已完全阻止此操作。
我不确定它是否重要,但我使用的是稍旧版本的 Selenium Web Driver 3.8.0。我还想到可能使用ChromeDriver 而不是PhantomJS,但不确定这是否会有所不同。
【问题讨论】:
标签: c# selenium phantomjs instagram