【Selenium_Web_CSS定位】华为官网电商平台,窗口切换和悬停校验的自动化测试案例

#!/usr/bin/env/python3
# -*- coding:utf-8 -*-
'''
Author:leo
Date&Time:2019-07-28 and 10:02
FileName:20190728_华为官网二级菜单悬停和窗口切换.py
Description:Python3.5+selenium3.0

'''
'''
-- 情景CSS定位、悬停、校验
1.登录华为官网 https://www.vmall.com/, 
2.点击 "华为官网" 链接
3.检查 "华为官网" 页面上是否 有如下主菜单:智能手机/笔记本/平板/穿戴设备/智能家居/更多产品/软件应用/服务与支持
4.最后再回到主窗口, 检查鼠标停留在 "笔记本&平板" 处的时候, 是否显示的菜单有:"平板电脑  笔记本电脑 笔记本配件"
5.模拟悬停操作,打印二级菜单信息
'''
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get("https://www.vmall.com/")

# 获取当前窗口句柄
mainHandle = driver.current_window_handle
driver.implicitly_wait(5)

# 点击华为官网链接跳转
driver.find_element_by_xpath("//div[@class='s-sub']//li[2]/a").click()
sleep(3)
driver.maximize_window()

# 获取所有窗口句柄
allHandles = driver.window_handles
print("主窗口为:"+driver.title)

# 切换浏览器窗口
for handle in allHandles:
    driver.switch_to.window(handle)
    if "华为消费者业务官网" in driver.title: # --这里要用driver.title,不用带括号()
        # driver.switch_to_window(i) # --这个新版本已经废弃,需要用driver.switch_to.window(i)
        print("新窗口为: "+driver.title)
        break
# menuTops = driver.find_elements_by_css_selector(".left-box .clearfix.nav-cnt li")  # --css用法
menuTops = driver.find_elements_by_xpath("//div[@class='left-box']//ul[@class='clearfix nav-cnt']/li")
menuList = []
for j in menuTops:
    menuName = j.find_element_by_tag_name("a").text
    menuList.append(menuName)

# 检查点
chckin = "智能手机/笔记本/平板/穿戴设备/智能家居/更多产品/软件应用/服务与支持"
menuList = "/".join(menuList)
print(f"\n当前菜单为:\n{menuList}")
if chckin ==menuList:
    print("\nPass the testcase!----------:\n{chckin}\n{menuList}")
else:
    print(f"\nFail the testcase!----------:\n{chckin}\n{menuList}")

# 切回主窗口
for handle2 in allHandles:
    driver.switch_to.window(handle2)
    if handle2 == mainHandle:
        print(f"\n欢迎回到主窗口:{driver.title}")
        break


# 导入鼠标悬停类
from selenium.webdriver import ActionChains

# 定位鼠标悬停位置
sleep(3)
mouseAddr = driver.find_element_by_css_selector("#zxnav_1")

# 悬停到目标区域
ActionChains(driver).move_to_element(mouseAddr).perform()

# 定位目标子区域并打印信息
mouseMenus = driver.find_elements_by_css_selector("#zxnav_1 div.category-panels.category-panels-1 li span")
print("\n悬停打印开始:")
mainMenu = "/".join([m.text for m in mouseMenus])
print(mainMenu+"\n")

# 检查点
check2 = "平板电脑/笔记本电脑/笔记本配件"
if mainMenu == check2:
    print(f"Pass the testcase!----------\n{check2}\n{mainMenu}")
else:
    print(f"Fail the testcase!---------- Please check your daima:\n{check2}\n{mainMenu}")

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

主窗口为:华为商城(VMALL.COM)_华为手机、荣耀手机、官网正品保障
新窗口为: 华为消费者业务官网-华为智能手机 | HUAWEI P30 系列

当前菜单为:
智能手机/笔记本/平板/智能穿戴/智能家居/更多产品/软件应用/服务与支持

Fail the testcase!----------:
智能手机/笔记本/平板/穿戴设备/智能家居/更多产品/软件应用/服务与支持
智能手机/笔记本/平板/智能穿戴/智能家居/更多产品/软件应用/服务与支持

欢迎回到主窗口:华为商城(VMALL.COM)_华为手机、荣耀手机、官网正品保障

悬停打印开始:
平板电脑/笔记本电脑/笔记本配件

Pass the testcase!----------
平板电脑/笔记本电脑/笔记本配件
平板电脑/笔记本电脑/笔记本配件

Process finished with exit code 0

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章