【问题标题】:PhantomJS click link not workingPhantomJS点击链接不起作用
【发布时间】:2014-10-26 11:46:00
【问题描述】:

我正在尝试使用以下代码获取黄页结果第二页的 URL:

var driverService = PhantomJSDriverService.CreateDefaultService();
var driver = new PhantomJSDriver(driverService);
driver.Navigate().GoToUrl(new Uri("http://www.yellowpages.com/los-angeles-ca/pizza?g=Los+Angeles%2C+CA"));
string url = driver.Url;
var next = driver.FindElementByCssSelector(".next");
next.Click();            
string newUrl = driver.Url;

找到并单击了“下一个”链接,但在调用next.Click() 后我没有得到新的 URL。

其他页面工作正常。我现在只是在黄页上遇到问题。

有什么想法吗?

【问题讨论】:

  • 您可能需要等待,因为按钮会触发 ajax 请求,然后才会加载下一页。
  • 我试图像这个线程stackoverflow.com/a/25745256/1718124 中提到的那样等待,但没有成功。网址没有改变。
  • 在将其传递给驱动程序之前尝试设置driverService.SslProtocol = "tlsv1";。你可以试试有没有等待?查看来源:stackoverflow.com/a/26565942/1816580
  • 行得通!即使没有等待扩展。谢谢!
  • @StasS 你是说原因吗?由于 POODLE,一些站点从其服务器中删除了 SSLv3。因此,PhantomJS ssl 协议应设置为 TLSv1,以便加载这些站点。但这从链接的答案中应该很清楚。

标签: c# selenium-webdriver phantomjs


【解决方案1】:

试试这个点击网页元素而不是使用click()

JavascriptExecutor js = (JavascriptExecutor)driver;

js.executeScript("arguments[0].click();", next);

【讨论】:

  • 这行得通,我有一个名为 click 的自定义函数,我使用 click() 处理 chrome、FF 和 phantomjs 我使用 javaScript..仅供参考,代码是 Java
【解决方案2】:

确保您已打开控制台输出,以便您可以看到确切的错误:

service.HideCommandPromptWindow = true;

我遇到了类似的问题,当我打开控制台输出时,我注意到以下错误:“找不到变量:__doPostBack”。

就我而言,这是因为网站拒绝了默认 Phantom 的用户代理,所以我不得不更改它 (based on this answer)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 2021-12-24
    相关资源
    最近更新 更多