使用Selenium时需要启动Java服务器吗?
$pip install selenium
$sudo apt-get install firefox xvfb
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
browser = webdriver.Firefox()
browser.get("http://www.yahoo.com")
这是我目前为止在使用Selenium时的代码。看起来是可以工作的,但它显示了一个错误:“错误:没有指定显示
”。
我的问题是:我需要运行selenium的jar文件吗?似乎运行与不运行都没什么区别……
2 个回答
0
不,你不需要运行Selenium RC服务器。你可以使用Webdriver方法,这是一种更好的功能测试方法,听起来是直接控制浏览器的。
我觉得服务器方法“Selenium RC服务器”更适合用来做负载测试或者多个用户测试,特别是在和Selenium Grid一起使用的时候。
0
首先让我给你解释一下客户端模式和服务器模式:
- 客户端模式:就是语言绑定连接到远程实例的方式。这是FirefoxDriver和RemoteWebDriver客户端通常工作的方式。
- 服务器模式:在这种模式下,语言绑定负责设置服务器,浏览器中的驱动程序可以连接到这个服务器。ChromeDriver就是这样工作的。
在当前的版本中,所有浏览器都可以在客户端模式下运行,不过你需要指定ChromeDriver.exe的路径。服务器模式也可以用来做同样的事情。你可以设置一个jar文件来作为特定浏览器的服务器,然后连接到这个服务器。如果你这样做,你会看到一个Jetty服务器被设置起来,并处理请求。如果没有看到这个过程,那说明你没有使用服务器模式。从你的代码来看,你现在使用的是客户端模式,所以没有必要运行jar文件,除非你想要它提供的额外远程功能。
运行这个jar文件是有用的,如果你想在远程机器上运行测试,这样你就可以在那台机器上运行jar文件,然后从本地机器连接到它。这个jar文件会处理在它运行的机器上启动浏览器,并将操作转发给它。
我相信在过去使用Selenium RC API时,总是需要运行这个jar文件,但在WebDriver中情况并非如此。