10

我已经编写了 PhantomJS 应用程序的某些部分。我正在一个网站上进行解析,我在该网站上将用户名和密码写入公式。在此之后,我必须单击一个链接。而我收到此错误:

TypeError: 'undefined' is not a function (evaluating 'myLink.click()')

  phantomjs://webpage.evaluate():11
  phantomjs://webpage.evaluate():22
  phantomjs://webpage.evaluate():22

这是我的 PhantomJS 代码:

if(document.getElementById("m_Content_submitbtn2").getAttribute('data-role') == "button"){
        var myLink = document.getElementById("m_Content_submitbtn2");   
    myLink.click();
}

这是我的链接:

<div class='button'><a href="#" data-role="button" tabindex='0' onclick='WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;m$Content$submitbtn2&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, true)); return false;' id="m_Content_submitbtn2">Log ind</a></div>&nbsp;
4

2 回答 2

6

您正在尝试在默认情况下并非所有浏览器都支持click()的元素上使用该方法。<a>而是尝试使用类似这样的东西,而不是myLink.click();你将不得不做的事情eventFire(myLink, 'click');

于 2012-11-24T01:26:12.870 回答
2

或者包括 jQuery 并执行以下操作:

var page = require('webpage').create();
page.open('http://www.sample.com', function() {
  page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
    page.evaluate(function() {
      $("button").click();
    });
    phantom.exit()
  });
});
于 2015-01-07T00:28:14.010 回答