Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Selenium-Instagram中的超高负载以下框_C#_Selenium_Phantomjs_Instagram - Fatal编程技术网

C# Selenium-Instagram中的超高负载以下框

C# Selenium-Instagram中的超高负载以下框,c#,selenium,phantomjs,instagram,C#,Selenium,Phantomjs,Instagram,我正在使用Selenium在Instagram页面中查找元素 我已成功登录并加载了用户配置文件,但无法加载以下框 在浏览器中,如果单击以下链接,将加载一个框,您可以滚动查看以下列表 在使用selenium时,我做了以下几点- var opt = new PhantomJSOptions(); opt.AddAdditionalCapability("phantomjs.page.settings.userAgent", "Mozilla/5.0 (Windows NT 10.0;

我正在使用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中找到了一些例子,人们似乎成功地使用了单击事件,例如

如何使用C#实现这一点?我不确定Instagram是否完全阻止了这一行动


我不确定这是否重要,但我使用的是稍微旧一点的SeleniumWebDriver 3.8.0版本。我也曾想到可能会使用
ChromeDriver
而不是
PhantomJS
,但不确定这是否会产生任何影响。

不幸的是,我没有Instagram帐户,无法为您完全试用,但考虑到这种行为就像您没有登录一样,我的假设是您没有等待足够长的时间,等待服务器在单击“登录”按钮和导航到用户页面之间返回身份验证成功

我建议在单击“登录”按钮后添加一个
线程。Sleep(5000)
,作为初始调查,等待5秒钟,等待登录过程完成,看看是否有效-如果有效,我建议您替换此线程睡眠,以等待页面上存在的元素,在成功登录后,您将重定向到该元素。这样,在导航到用户页面之前,您总是在等待登录过程完成,这样您的行为就有望达到预期效果

我注意到的另一件事是,如果您在浏览器中单击 浏览器中的链接、url将更新为-

https://www.instagram.com/{username}/following/
https://www.instagram.com/{username}/following/

但是如果你复制 单击此链接并将其粘贴到新窗口中,然后尝试导航到它 不会像我预期的那样自动加载下面的框,只是 带您进入用户主页面

如果我没有弄错的话,这是因为单击此按钮会发送POST请求:

但是,当您在浏览器中通过此URL时,就会发出GET请求,并且它缺少一些所需的数据

我建议您调试您的问题,以检查接下来的内容:

在单击链接之前,当您设置制动点时会发生什么情况?如果工作正常,则需要等待页面/脚本加载。如何做到这一点有很多细微差别。您可以在此处寻求帮助:

您提供的Python代码链接只是一些不难转换为C#的代码,但作者没有在这里描述您的问题。您现在的问题是,您无法调用所需的弹出窗口,所以请处理它

Thread.Sleep()
不是首选方法,但如果有帮助,您可以使用它进行调试。如果它有帮助,并且您不想深入研究如何等待页面/脚本加载,您可以保持原样