Web自动化测试(基础学习篇一)

目录

1.页面截图操作

1.1截取当前页面

1.2.1driver.save_screenshot(filename/full_path)

1.2.2driver.get_screenshot_as_file(完整的路径/文件名)

1.2.3driver.get_screenshot_as_png()

1.2.4driver.get_screenshot_as_base64()

1.2截取整个页面(长截图)

2.页面元素属性增删改查方法

3.下拉滚动条方法

3.1滑动至页面底部

3.2滑动至顶部

3.3滑动至具体位置

3.4滑动至目标元素可见

4.窗口及 Frame 切换方法

4.1frame简介

4.2窗口切换

1.页面截图操作

1.1截取当前页面

1.2.1driver.save_screenshot(filename/full_path)

from selenium import webdriver
#  定义一个驱动的对象
driver=webdriver.Chrome()
#  打开需要测试的页面
driver.get("https://www.baidu.com")
#  截屏 
driver.save_screenshot('sanmu.png')

1.2.2driver.get_screenshot_as_file(完整的路径/文件名)

#  打开需要测试的网页
driver.get('http://news.baidu.com/')
#  截屏
driver.get_screenshot_as_file('sanmu.png')

1.2.3driver.get_screenshot_as_png()

返回二进制数据流,然后通过文件读写的方式去保存数据。

#  打开需要测试的页面
driver.get("https://www.baidu.com")
# 截屏
data=driver.get_screenshot_as_png()
#  通过文件读写形式,把数据存储到本地
with open('sanmu.jpg','wb') as file:
    file.write(data)

1.2.4driver.get_screenshot_as_base64()

返回base64编码格式的数据,然后通过文件读写的形式存储解码后的数据,完成截屏。

#  打开需要测试的页面
driver.get("https://www.baidu.com")
#  通过driver.get_screenshot_as_base64()方法获取屏幕的base64编码格式的数据
base64_data=driver.get_screenshot_as_base64()
#  对数据解码
image_data=base64.b64decode(base64_data)
#  通过文件读写的形式,保存解码后的数据
with open('sanmu.jpg','wb') as file:
    file.write(image_data)

1.2截取整个页面(长截图)

可执行JavaScript 脚本,将页面的滚动条拖到页面底部,然后再拖回顶部,最后截图。

from selenium import webdriver
import time

#take_screenshot封装
def take_screenshot(url, save_fn="sanmu.png"):
    driver = webdriver.Chrome() 
    driver.set_window_size(1200, 900)
    driver.get(url) 
    browser.execute_script("""
        (function () {
            var y = 0;
            var step = 100;
            window.scroll(0,0);

         function f() {
            if (y < document.body.scrollHeight) {
                y += step;
                window.scroll(0, y);
                setTimeout(f, 100);
            } else {
                window.scroll(0, 0);
                document.title += "scroll-done";
            }
        }

        setTimeout(f, 1000);
    })();
""")

for i in xrange(30):
    if "scroll-done" in browser.title:
        break
    time.sleep(10)

driver.save_screenshot(save_fn)
driver.close()


if __name__ == "__main__":

take_screenshot("http://baidu.com")

2.页面元素属性增删改查方法

#新增属性
driver.execute_script(“arguments[0].%s=arguments[1]” %attributeName,elementObj, value)
#删除属性
driver.execute_script(“arguments[0].removeAttribute(arguments[1])”,elementObj,attributeName)
#修改属性
driver.execute_script(“arguments[0].setAttribute(arguments[1],arguments[2])”, elementObj, attributeName, value)
#获取属性
elementObj.get_attribute(attributeName)

3.下拉滚动条方法

3.1滑动至页面底部

js="window.scrollTo(0,document.body.scrollHeight)" 
driver.execute_script(js)

3.2滑动至顶部

js="window.scrollTo(0,-document.body.scrollHeight)" 
driver.execute_script(js)

3.3滑动至具体位置

window.scrollBy(0,-500) # 向上滚动500个像素
window.scrollBy(0,500)   # 向下滑动500个像素
window.scrollBy(-500,0) # 向左滚动500个像素
window.scrollBy(500,0)   # 向右滑动500个像素
driver.execute_script("window.scrollTo(x,y)")  # 滑动到具体位置(坐标)

3.4滑动至目标元素可见

driver.execute_script("arguments[0].scrollIntoView(true);", element)  # 向下滚动至元素可见
driver.execute_script("arguments[0].scrollIntoView(false);",element)  # 向上滚动至元素可见

4.窗口及 Frame 切换方法

4.1frame简介

     frame 元素在html语法中,其内部会包含一个被嵌入的另一份html文档。当使用selenium打开一个网页,操作范围缺省当前的 html , 并不包含被嵌入的html文档里面的内容。

     如果要操作被嵌入的html文档中的元素,须切换操作范围到被嵌入的文档中。

driver.switch_to.frame(frame_reference)#切换
driver.switch_to.default_content()#切回原html页面

4.2窗口切换

     在网页上操作,点击一个链接或者按钮,会打开新窗口, 需要切换窗口对当前窗口元素定位。

#简单切换
handles = driver.window_handles
driver.switch_to.window(handles[1])#开始访问的是句柄0,第二个页面是1
#循环遍历确定
for handle in driver.window_handles:
    # 先切换到该窗口
    wb.switch_to.window(handle)
    # 得到该窗口的标题栏字符串,判断是不是要操作的窗口
    if '窗口标题' in driver.title:
        # 如果是,那么WebDriver对象就是对应的该窗口,跳出循环
        break

如果要跳回原来页面: 

#变量保存当前窗口的句柄
mainWindow = driver.current_window_handle
#切换到初始窗口
driv.switch_to.window(mainWindow)

猜你喜欢

转载自blog.csdn.net/m0_58807719/article/details/130036389