首先,一些背景。我正在尝试使用LLVM在Firefox上运行配置文件引导优化,这意味着我必须自己使用clang构建源代码。因此我下载了Firefox,并使用来自源码的Mach构建它。
但是,当我尝试在每晚构建时使用Selenium时,它似乎无法与浏览器通信。例如,以下代码加载yahoo.com然后无限期地挂起在driver.get()上。我尝试使用显式和隐式等待和time.sleep()来使代码移过去driver.get(),但我找不到任何东西。这段代码与Firefox的官方版本完美配合,而不是我编译的任何版本。
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0
from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0
# Create a new instance of the Firefox driver
binary = FirefoxBinary('/home/kevin/firefox/mozilla-central/obj-x86_64-unknown-linux-gnu/dist/bin/firefox')
driver = webdriver.Firefox(firefox_binary=binary)
sequence = ['http://www.yahoo.com', 'http://www.cnn.com', 'http://www.amazon.com', 'http://www.newegg.com', 'http://www.google.com']
for url in sequence:
driver.get(url)
driver.quit()
要明确的是,驱动程序可以要求Firefox加载序列中的第一页。但是,它之后就会永远挂起。
我查看了其他主题,并尝试更新Selenium和Firefox,但到目前为止还没有任何工作。
有没有办法迫使Selenium继续前进?如果不这样做,是否有其他浏览器自动化框架可能与每晚构建的Firefox更合作?