lenium-webdriver简单教程

更新时间:2023-07-29 14:20:19 阅读: 评论:0

lenium-webdriver简单教程
ruby环境下lenium/webdriver可以通过包进⾏安装
gem install lenium-webdriver
心研小公主
⽀持语⾔及版本有ruby 1.8.7~1.9.2,jrbuy和rubinius
lenium-webdriver包含了lenium-client,在阅读的时候,要注意它们两个命名空间是在两不同的API⾥:
1.Selenium::WebDriver - WebDrver API
2.Selenium::Client - Selenium RC API
WebDrver API是继承⾃Selenium RC API,所以没有必要在Selenium RC API花⼤量的时间,我们可以直接从Selenium::WebDriver开始,并围绕两个⼤类:Seleniu::WebDriver:Driver 和Selenium::WebDriver::Element,这是整个WebDriver API的⼊⼝。
API 例⼦:
⼀个简单的例⼦:
require "lenium-webdriver"
driver = Selenium::WebDriver.for :firefox
"hk"
element = driver.find_element(:name,'q')
element.nd_keys "Hello WebDriver"
做我的主人element.submit
puts driver.title
driver.quit
母草Driver 例⼦:
# 应⽤javascript
ute_script("return window.location.pathname")
# 利⽤ruby和js获取元素
element = ut_script("return document.body")
# 等待⼀些特殊元素的出现
wait = Selenium::WebDriver::w(:timeout=>10) # conds
wait.until{driver.find_element(:id,"foo")}
# 注:wait在new时,可以设置三个值,分别为:timeout(默认5秒),:message(默认nil),:interval(默认0.5)
# 选择frame
driver.switch_to.frame "some-frame" # name或id
driver.switch_to.frame driver.find_element(:id, 'some-frame') # frame
# 注:switch_to⽅法不仅可以选择frame,还可以处理window,alert,comfirmation等窗⼝
# 选择回主窗⼝
driver.swith_to.default_content
Element 例⼦:
# 获取元素属性
class_name = element.attr寒食节的故事
ibute("class")
# 判断元素是否显⽰
element.displayed?
# 获取元素在页⾯上的相对坐标位置
element.location
element.location.x
element.location.y
# 将元素滚动到视频可以显⽰的位置,再返回元素的相对坐标
element.location_once_scrolled_into_view
# 获取元素的宽和⾼
element.size
# 在元素⾥输⼊空,参看Selenium::WebDriver::Keys输⼊值
element.nd_keys :space
element.nd_keys "tet", :arrow_left, "s" #=> "test", 先输⼊ tet, 再输⼊⼀次左⽅向键,再输⼊s
element.nd_keys [:control, 'a'], "1" #=> "1", 先输⼊crtl+a,再输⼊1
# 获取元素⽂本
<
更⾼级的⽤法(见 ActionBuilder)
driver.action.key_down(:shift).click(element).double_click(cond_element).key_up(:shift).drag_and_drop(element,third_element).perform
启动chrome浏览器的⽅法
1.下载并运⾏,如图
2.启动chrome
driver = Selenium::WebDriver.for :remote, :url=>"localhost:9515"
< "hk"
其它操作⼀样。
如果这样感觉⽐较⿇烦,可以将下载的路径加载到环境变量中,就可直接⽤了
driver = Selenium::WebDriver.for :chrome
chrome个性化启动
profile = Selenium::WebDriver::Chrome::w
profile['download.prompt_for_download'] = fal
profile['download.default_directory'] = "d:/download"
driver = Selenium::WebDriver.for :chrome, :profile=>profile
Remote应⽤
可以控制浏览器在不同的机器上运⾏,下载jar
java -jar lenium-rver-standalone.jar '启动服务
driver = Selenium::WebDriver.for :remote
默认情况下,可以启动服务运⾏在localhost:4444,并打开firefox。如果想连接其它机器上的服务,可以⽤:url选项
driver = Selenium::WebDriver.for :remote, :url=>"remoterver:44444/wd/hub"
本机不⽤加/wd/hub,但远程⼀定要加
启动其它的浏览器,⽤:desired_capabilities选项
driver = Selenium::WebDriver.for :remote, :desired_capabilities=>:chrome
Selenium::WebDriver::Remote::Capabilities的例⼦
require "lenium-webdriver"
include Selenium
caps = WebDriver::Remote::Capabilities.htmlunit :javascript_enabled=>true
driver = WebDriver.for :remote, :desired_capalibities=>caps
修改remote服务的端⼝号,⽬前只⽀持firefox
include Selenium
caps = WebDriver::Remote::Capabilities.firefox (:proxy=>WebDriver::w(:http=>"myproxyaddress:8888"))
driver = WebDriver.for :remote, :desired_capalibities=>caps
如果是⼀个远程的remote服务
include Selenium
client = WebDriver::Remote::Http::w
client.proxy = w :http=>"proxy:8888"
driver = WebDriver.for :remote, :http_client=>client
Firefox
加扩展插件
在⽤firefox时,经常要⽤到firebug进⾏查看,启动firefox带firebug事后诸葛亮
include Selenium
profile = WebDriver::Firefox::w
profile.add_extension "path/firebug.xpi"
driver = WebDriver.for :firefox, :profile=>profile
使⽤已经存在的profile
使⽤⼀个已经存在的profile模板,可以⽤firefox -profilemanger把profile保存出来(这个命令在ff8上似乎⽆⽤,还要进⼀步验证)driver = Selenium::WebDriver.for :firefox, :profile=>"my_existing_profile"
如果想⽤默认profile,可以通过 :profile=>"default"
或者也可以这通过profile实例来使⽤已经存在的和⾃定义的profile。此⽅法不能修改已经存在的profile,且只能在webdriver下使⽤default_profile = Selenium::WebDriver::Firdfox::Profile.from_name "default"
旗花default_profile.native_events = true
driver = Selenium::WebDriver.for :firefox, :profile=>default_profile
导出firefox profile见
Firefox个性化设置
端⼝号
profile = Selenium::WebDriver::Firefox::w
profile['browr.download.dir'] = 'd:\download'
profile['browr.download.folderlist'] = 2
profile['verAsk.saveToDisk'] = "application/pdf"
driver = Selenium::WebDriver.for :firefox, :profile=>profile
⽤remote driver启动时,任然可以对firefox进⾏个性化设置
profile = Selenium::WebDriver::Firfox::w
profile['foo.bar'] = true
capabilities = Selenium::WebDriver::Remote::Capabilities.firefox :firefox_profile=>profile
driver = Selenium::WebDriver.fox :remote, :desired_capabilities=>capabilities
设置Firefox路径
当firfox不是安装在默认路径中时,要设定firefox的安装路径
Selenium::WebDriver::Firefox.path = "/path/to/firefox" # firefox安装路径
driver = Selenium::WebDriver.for :firefox
本地事件
本地事件在window下默认是激活的,可以设置关闭:
profile = Selenium::WebDriver::Firefox::w
profile.native_events = fal # 关闭
driver = Selenium::WebDriver.for :firefox, :profile=>profile
理论上linux⽀持本地事件,profile.native_events = true # 开启
Opera
opera也是⽤remote的⽅法进⾏启动的。在开始之前,要下载jar,并且新建环境变量SELENIUM_SERVER_JAR到本地系统中。
window: SELENIUM_SERVER_JAR=..\rver-standalone.jar
liunx: export SELENIUM_SERVER_JAR=path_to/rver-standalone.jar
便可以轻松的⽤Selenium::WebDriver启动Opera
driver = Selenium::WebDriver.for :opera
""
Timeouts
隐式等待
WebDriver可以设置隐式等待,所以在应⽤#find_element定位元素时,会等待元素的出现,直⾄NoSuchElementError的出现。
driver = Selenium::WebDriver.for :firefox
driver.manager.timeouts.implicit_wait = 3 # 等待3秒
显⽰等待
可以⽤wait类去实例化⼀些等待条件
wait = Selenium::WebDriver::w(:timeout=>3)
wait.until {driver.find_elenium(:id=>"foo").displayed?}
内部的超时
WebDriver使⽤了⼤量的HTTP的驱动(jsonWireProtocol)。Net::HTTP作为ruby的标准库使⽤,默认超时为60秒。如果⽤WebDriver#get启动⼀个加载时间超过60秒的页⾯,你会看Net::HTTP的TimeoutError错误,可以在启动浏览器之前修改timeout来改变默认超时时长。
聚集造句client = Selenium::WebDriver::Remote::Http::w
client.titmeout = 120 # 设置为120秒
driver = Selenium::WebDriver.for :temote, :http_client=>client
js弹出框
获取js的alert,prompt和comfirm弹出窗都是⽤switch_to
require "lenium-webdriver"
driver = Selenium::WebDriver.for :firefox
合肥旅游景点 "/page_with_alert.html"
driver.find_element(:name, 'element_with_alert_javascript').click
a = driver.switch_to.alert
== 'A value you are looking for'
a.dismiss
el
a.accept
end
⽤Curb或者⾃⼰的http client
HTTP通信内部默认使⽤Net::HTTP,如果有安装就可以选择这么做
require "lenium/webdriver/remot/http/curb"
include Selenium
client = WebDriver::Remote::Http::w driver = WebDriver.for :remote, :http_client=>client

本文发布于:2023-07-29 14:20:19,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1100910.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:UO热键详解
标签:元素   启动   默认   路径   安装   修改   等待
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图