2

このリンクからのリンクなど、href に Javascript が含まれるリンクをクリックするために、PhantomJS Ghost Driver で Selenium for Python を使用しています。リンクは要素として問題なく取得できますが、クリックしようとすると問題が発生します。ここにいくつかのコードがあります (注 - url はリストで、最初の要素は Jscript リンクで、2 番目の要素はリンク テキストです)

def get_jscript_down(self,url):
    driver = webdriver.PhantomJS()
    print(self.exact_url)
    driver.get(self.exact_url)
    elements = driver.find_elements_by_tag_name("a")
    for ele in elements:
        if ele.text == url[1].encode("utf-8").replace("  "," "):
            break
    ele.click()
    print("Cannot yet download %s" % url)

    return False

ele.click() を除いて、必要に応じてすべてが機能します。それを実行すると、見苦しい WebDriverException が発生します。

selenium.common.exceptions.WebDriverException: Message: u'Error Message => \'Click failed: ReferenceError: Can\'t find variable: __doPostBack\'\n caused by Request => {"headers":{"Accept":"application/json","Accept-Encoding":"identity","Connection":"close","Content-Length":"81","Content-Type":"application/json;charset=UTF-8","Host":"127.0.0.1:34441","User-Agent":"Python-urllib/2.6"},"httpVersion":"1.1","method":"POST","post":"{\"sessionId\": \"71c20b50-ca21-11e2-a03c-f58c49e5a1bc\", \"id\": \":wdc:1370025577147\"}","url":"/click","urlParsed":{"anchor":"","query":"","file":"click","directory":"/","path":"/click","relative":"/click","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/click","queryKey":{},"chunks":["click"]},"urlOriginal":"/session/71c20b50-ca21-11e2-a03c-f58c49e5a1bc/element/%3Awdc%3A1370025577147/click"}' ; Screenshot: available via screen

このクリックが失敗する理由がよくわかりません。私が読んだ限りでは、そのようにクリックしても大丈夫なはずです。以下は、スタックトレースの関連部分です(物事が壊れ始める直前から最後まで)

行 283、get_jscript_down 内
    ele.click()
  ファイル「/usr/local/lib/python2.6/dist-packages/selenium/webdriver/remote/webelement.py」、54行目、クリック
    self._execute(Command.CLICK_ELEMENT)
  ファイル "/usr/local/lib/python2.6/dist-packages/selenium/webdriver/remote/webelement.py"、228 行目、_execute 内
    return self._parent.execute(コマンド、パラメーター)
  ファイル「/usr/local/lib/python2.6/dist-packages/selenium/webdriver/remote/webdriver.py」、165行目、実行中
    self.error_handler.check_response(応答)
  ファイル「/usr/local/lib/python2.6/dist-packages/selenium/webdriver/remote/errorhandler.py」、158行目、check_response
    raise exception_class(メッセージ、スクリーン、スタックトレース)

どんなアイデアでも大歓迎です。私はかなり困惑しています。

4

2 に答える 2

2

このページの「Privatperson」をクリックすると、同じエラーが発生しました。ボタンの ID は「btnSelectB2C」です。私がやったのは、要素で送信を使用することでした:

driver.find_element(:id, 'btnSelectB2C').submit

(これはRubyコードですが、あなたのケースに適用できる場合、適応するのは簡単だと思います。)

于 2013-07-27T00:35:02.947 に答える