selenium学习笔记2
?
在一般情况下,java -jar selenium-server-standalone-.jar就够用了。但是有些选项,还是蛮有用的,可以关注一下。
-port: 指定Selenium Server的侦听的端口号。如果没有指定port,使用4444。-profilesLocation: (仅Firefox)指定Firefox的profile文件位置。什么?不晓得Firefox的profile是干啥用?简单的说,就是将你浏览网站的cookie、历史记录等记录到一个文件夹下面(点击这里查看详细)。 为什么需要这个呢?在默认情况下,Selenium Server会使用一个空的profile文件夹的,也就是它启动的Firefox是一个“干净 ”的浏览器。有时候,这并不是你所想要的,例如,在某些网站,做过的一些设置(如关掉页面上恼人的浮层),如果是“干净”的浏览器,那你的设置就没法生效 的。
-browserSessionReuse:可以节省tests运行时间的。在每个test运行的时候,不用重新再次启动Firefox,复用旧的Firefox。
-userExtensions :firefox的用户扩展。将一段js代码load到selenium里面去,非常有用。对于一些已经实现了使用JS来验证的工具,无缝的集成到 Selenium里面,这意味着原本单个页面的手工执行JS工具,可以通过Selenium自动化来执行这些工具。
更多的选项,可以来查看帮助:
java -jar /selenium-server-standalone-.jar –help2.1 IE
Internet Explorer不支持类似于Firefox的profile,它是基于Windows用户的,想使用一个新的profile,只有创建一个新的Windows用户。
2.2 Firefox
如果是启动Selenium Server,那很简单,help命令中就有,可以使用选项-firefoxProfileTemplate或者选项-profilesLocation。
java -jar selenium-server-standalone-2.22.0.jar –firefoxProfileTemplate d:\seelenium\firefox_profile\
如果是启动Selenium Grid,Google了一下,没有找到办法。但是在查看Selenium源代码的时候,发现已经支持了,尝试之,果然有效。
java -jar selenium-server-standalone-2.22.0.jar -Dwebdriver.firefox.profile=myProfile -port 4001 -role node -hub http://127.0.0.1:4000/grid/register
?
2.3 Chrome
Chrome使用profile,在官方版本中,目前没法在Selenium Server或者Selenium Grid端指定的。但是它可以在客户端指定(有些奇怪哈)。
DesiredCapabilities capabilities = DesiredCapabilities.chrome();capabilities.setCapability("chrome.switches", Arrays.asList("--user-data-dir=/path/to/profile/directory")); WebDriver driver = new ChromeDriver(capabilities);
详细的请参考:
http://code.google.com/p/selenium/wiki/ChromeDriver
此外,Chrome使用profile的时候,对于同一个profile,当前只能够启动一个Chrome浏览器实例,请见:
http://code.google.com/p/chromedriver/issues/detail?id=79
webdriver高级用法
http://seleniumhq.org/docs/04_webdriver_advanced.html#explicit-and-implicit-waits
?
?
xpath?
For example, if your dynamic ids have the format?