❶ [Selenium自动化测试实战] 不打开浏览器如何进行WEB自动化测试
在一般的使用场景下,使用selenium进行web自动化测试都需要打开一个浏览器的实体,测试脚本通过控制webdriver来对浏览器进行操作。但是在一些场景下测试工程师需要在不打开浏览器的情况下进行自动化测试,也就是以headless的方式运行自动化测试。
业界有一些headless的第三方库可以使用,例如大名鼎鼎的PhantomJS。但是这些工具的安装很复杂,同时不一定保证持续的维护。
现在全球最受欢迎的浏览器Chrome在Chrome 59 (Chrome 60 for Windows)版本中已经支持了headless mode,只需要配置一些简单的参数就可以实现。
首先要确认自己机子上的Chrome版本。
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.jd.com"
driver.save_screenshot("#{File.dirname(__FILE__)}/#{Time.now.strftime("%F")}")
通过在Selenium::WebDriver::Chrome::Options类的对象中添加argumentoptions.add_argument('--headless'),可以让我们在Chrome在headless模式下运行。
而第二个argument的作用是针对现有bug的work around。第三个argument的作用则是允许我们可以在另外一个浏览器中debug。
为了观测运行的情况,我保存了一个屏幕截图。
相比于之前的headless web自动化方案,Chrome的优势在于设置的方便,甚至可以和当前的框架无缝切换,同时Chrome作为最为主流的浏览器,你也不用担心持续维护的问题。
❷ web自动化测试之web自动化中操作要点
1、切换iframe:
driver.switch_to.frame(' xxx')
2、浏览器向右移动页面(浏览器中执行JavaScript代码)
driver.execute_script('window.scrollBy(200,0)') # window.scrollBy(x,y)
3、driver.implicitly_wait()和time.sleep()的区别
driver.implicitly_wait(10) #设置寻找元素最大等待时间;
implicitly_wait(5)属于隐式等待,5秒钟内只要找到了元素就开始执行,5秒钟后未找到,就超时;
time.sleep(5)表示必须等待5秒定位。
4、切换到新的目标窗口
#切换webdriver到新的目标窗口
for handle in driver.window_handles:
driver.switch_to.window(handle)
#判断是否进行了目标窗口
title=driver.title
if 'xxxxx' in title:
break
5、当页面广告遮挡了元素,可将页面广告元素删除
element=driver.find_element_by_css_selector('#meiqia-container iframe[name=chat]') driver.execute_script('$(arguments[0]).remove()',element) #将element传给了arguments[0] time.sleep(2)
6、切换浏览器标签页
使用switch_to_window(window),搭配句柄window_handles、current_window_handle使用。
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www..com")
driver.implicitly_wait(10)
driver.find_element_by_id("kw").send_keys("python")
driver.find_element_by_id("su").click()
driver.find_element_by_xpath("//*[@id='2']/h3/a").click()
#获取当前窗口所有句柄
all_windows = driver.window_handles
#获取当前标签页窗口句柄
current_window = driver.current_window_handle
#切换标签页窗口
for window in all_windows:
if window !=current_window:
print("切换前的窗口名称是:",driver.title)
driver.switch_to_window(window)
time.sleep(2)
print("切换后的窗口名称是:",driver.title)
break
7、切换iframe页面
使用switch_to_frame()、switch_to_default_content(),一般成套使用更好,以防止未切回导致定位失败。
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://ke.qq.com/")
driver.implicitly_wait(10)
#点击登录
driver.find_element_by_class_name("btn-default").click()
time.sleep(0.5)
driver.find_element_by_xpath("//*[@class='js-btns-enter btns-enter btns-enter-qq']").click() time.sleep(2)
#点击账号密码登录
#这里直接定位会失败,需要切换到登录弹窗页面后再进行定位,习惯使用的是2种切换方式
#1.iframe有唯一名称
driver.switch_to_frame("login_frame_qq")
driver.find_element_by_id("switcher_plogin").click()
driver.find_element_by_id("u").send_keys("123456789")
#回切到主页面
driver.switch_to_default_content()
time.sleep(2)
#2.iframe无名字,使用下标进行切换,且下标从0开始
#在页面中查到到当前需要定位的iframe在第3个,所以下标是2
#再次切换到弹窗页面 driver.switch_to_frame(2)
driver.find_element_by_id("p").send_keys("123456789")
driver.find_element_by_id("login_button").click()
driver.switch_to_default_content()
time.sleep(5)
driver.quit()
8、处理弹窗
使用switch_to_alert()中的accept()、dismiss()、send_keys、text进行操作,弹窗一般有三种类型,①.只有确认按钮的;②.有确认/取消按钮的;③.需要输入文字的。
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www..com")
driver.implicitly_wait(10)
#创建一个测试弹窗
driver.execute_script("window.alert('这是一个测试弹窗')")
time.sleep(2)
#1.弹窗中只有确认按钮的
driver.switch_to_alert().accept()
time.sleep(1)
#2.弹窗中有确认/取消按钮的
driver.execute_script("window.alert('这是一个测试弹窗')")
time.sleep(3)
#点击取消
driver.switch_to_alert().dismiss()
time.sleep(1)
#弹窗中需要输入文字的
# driver.switch_to_alert().send_keys("测试测试测试")
#获取弹窗中的内容
driver.execute_script("window.alert('这是一个测试弹窗')")
res = driver.switch_to_alert().text
print(res)
❸ webbrowser能干什么
webbrowser是一款基于IE内核的浏览器控件,能使你在程序中打开浏览器一样打开网页操作网页,一般用于自动化操作,例如自动登录,自动抢东西等;
❹ rf执行web自动化浏览器自动关闭怎么回事
设置。rf执行web自动化浏览器自动关闭是因毁清为设置,浏览纤答前器是用来检索、展示以及传递Web信息资源的应用程序。Web信息资源由统一的资举陆源标识符( Uniform Resource Identifier,URI)所标记。
❺ web网站做自动化测试,有经验的人推荐下工具吧
算你问对人了,ruby+watir或者Selenium 。我正在写一个web自动化的测试框架。哈哈