ruby selenium

ruby Selenium 自动化测试

打开浏览器

require 'selenium-webdriver'
driver=Selenium::WebDriver. for:chrome
driver.get("www.baidu.com")
driver=Selenium::WebDriver. for:ie
driver.get("www.baidu.com")

浏览器窗口设置

driver.manage.window.maximize  #窗口最大化

Headless mode

#在一些场景下测试工程师需要在不打开浏览器的情况下进行自动化测试,也就是以headless的方式运行自动化测试。
现在全球最受欢迎的浏览器ChromeChrome 59 (Chrome 60 for Windows)版本中已经支持了headless mode,只需要配置一些简单的参数就可以实现。

require 'selenium-webdriver'

options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--remote-debugging-port=9222')
driver = Selenium::WebDriver.for :chrome, options: options

driver.get "https://www.acitve.com"
driver.save_screenshot("#{File.dirname(__FILE__)}/#{Time.now.strftime("%F")}")

关闭浏览器

driver.close # 关闭当前窗口
driver.quit  # 关闭浏览器 不仅关闭窗口,还会彻底的退出webdriver,释放与driver server之间的连接

窗口操作

driver.title
puts driver.title  #打印窗口title
driver.switch_to.window(driver.window_handles[0])   #切换第一个窗口
driver.switch_to.window(driver.window_handles[-1]) #切换到最后一个窗口
driver.window_handles.length   #窗口个数

iframe

driver.switch_to.frame(id)  #进入frame
driver.switch_to.frame(1)  #进入第一个frame
driver.switch_to.default_content  #退出所有frame 
driver.switch_to.frame(driver.find_element(:xpath,"//*[@id='123']"))  #通过xpath进入frame

窗口刷新,返回,前进

#刷新窗口
driver.navigate.refresh 
#返回
dr.navigate.back()
#前进
dr.navigate.forward()

简单的元素定位

#id
driver.find_element(:id,"123").click
#name
driver.find_element(:name,""123).click
#css
driver.find_element(:css,"123").click
#xpath
driver.find_element(:xpath,"//*[@id='123']").click

简单的元素操作

#点击
driver.find_element(:xpath,"//*[@id='123']").click
#删除
driver.find_element(:xpath,"//*[@id='123']").clear
#输入
driver.find_element(:xpath,"//*[@id='123']").send_keys"123456"

等待时间

1、强制等待 sleep

sleep 0.5 #制等待0.5秒
sleep 5 #强制等待5秒

2、隐式等待
隐式等待未全局等待,设置一次全局生效;

 driver.manage.timeouts.implicit_wait = 10  #等待10元素未出现时抛出NoSuchElement异常

3、显示等待
显式等待通过Selenium::WebDriver::Wait对象,设置一个等待的条件,条件成立时继续执行,超过timeout则抛出异常,ignore为遇到Selenium::WebDriver::Error::JavascriptError异常时不抛出

wait = Selenium::WebDriver::Wait.new({:timeout=>15,:interval=>0.2,:ignore=>Selenium::WebDriver::Error::JavascriptError})
wait.until{driver.find_element(:xpath,"//*[@id='123']").displayed?} 

driver.action.move_to(“元素位置”).perform

元素被遮挡 处理方法

1、元素聚焦
arguments[0]表示第一个参数,argument[1]表示第二个参数

target = driver.find_element(:xpath,"//label[@title='#{menu}']")
driver.execute_script("arguments[0].scrollIntoView();", target)

2、直接点击

target = driver.find_element(:xpath,"//label[@title='#{menu}']")
driver.execute_script("arguments[0].click()", target)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值