0

私はリモート Web クロールとスクレイピングを行っており、1 つのページのすべてのリンクに対して新しいブラウザー ウィンドウをリロードしないことを望んでいます。

問題は、Firefox Web ドライバーで新しいタブが開かないことです。

これが私が試したことです:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from pyvirtualdisplay import Display

# launch our headless display 
display = Display(visible=0, size=(800, 600))
display.start()

# launch our web driver and get a page
browser = webdriver.Firefox()
browser.get("http://www.google.com/")

# try to open a new tab
ActionChains(browser).key_down(Keys.CONTROL).send_keys("t").key_up(Keys.CONTROL).perform()

# this should print 2, but it prints 1, because new tab not opened
print len(browser.window_handles)

# clean up everything
browser.quit()
display.stop()

仕様:

  • Ubuntu 14.04.2
  • パイソン 2.7.6
  • セレン 2.47.1
  • PyVirtualDisplay 0.1.3
4

1 に答える 1

1

Selenium 開発者からのこの回答に基づいて、Firefox の新しいタブは 2015 年 8 月の時点でサポートされていません。彼はMarionetteを調査することを提案しましたが、現在、少なくとも私のユース ケースでは、その依存関係が価値以上の問題を引き起こしています。彼の解決策はdriver.execute_script("window.open()")、新しいタブの代わりに新しいウィンドウ ( ) を使用することです。

于 2015-08-30T06:50:00.180 に答える