我在虚拟环境中开发了一个 django 项目,它在我的一个 .py 程序中使用了 selenium 模块,如下所示:
from selenium import webdriver
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(10)
self.base_url = "%s"%(website)
self.verificationErrors = []
self.accept_next_alert = True
driver = self.driver
driver.get(self.base_url + "/")
driver.find_element_by_link_text("Sign In").click()
driver.implicitly_wait(15)
driver.switch_to_window(driver.window_handles[-1])
driver.find_element_by_id("authentication_email").clear()
driver.find_element_by_id("authentication_email").send_keys("%s"%(username))
driver.find_element_by_css_selector("button.isReturning.isTransitionToSecondary").click()
driver.find_element_by_id("authentication_password").clear()
它在我的虚拟环境中运行良好,但是当我在服务器上部署后尝试使用它时,我收到以下错误:
WebDriverException
Message: The browser appears to have exited before we could connect. If you specified a log_file in the FirefoxBinary constructor, check it for details.
我开始知道 selenium webdriver 只在客户端而不是服务器上运行(如果我错了请纠正我),那么有什么办法可以在服务器上执行相同的命令吗?也许导入任何新模块或调用 api?如果有人有见识,请指导我。在此先感谢。
最佳答案
看起来你的服务器没有显示。 尝试查看虚拟显示 (xvnc/xvfb)。 您也可以尝试使用 PyVirtualDisplay:https://pypi.python.org/pypi/PyVirtualDisplay 它可能看起来像这样:
from pyvirtualdisplay import Display
from selenium import webdriver
self.display = Display(visible=0, size=(1024, 768))
self.display.start()
self.driver = webdriver.Firefox()
关于python - 在服务器上运行 Django-selenium 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32479813/