51Testing软件测试论坛

标题: python+selenium链接页面自动化,求大师指点优化代码? [打印本页]

作者: 黑盒测试    时间: 2017-2-27 18:09
标题: python+selenium链接页面自动化,求大师指点优化代码?
python+selenium链接页面自动化,求大师指点优化代码?
代码是可以跑通的,感觉写的有点乱,求指点


#!/usr/bin/env python
#_*_coding:utf-8_*_
from selenium import webdriver
import time
from selenium.webdriver.common.action_chains import ActionChains
def OpenUrl():
    driver=webdriver.Chrome()
    driver.maximize_window()
    driver.get('http://*********')
    return driver
#5个主页面
links=['AiBB','HOT51','Live秀','MV','歌手']
#5个主页面的共同链接页面
link=['大星闻','爱豆评选','关于我们','联系我们','招贤纳士','隐私政策','沪B2-20090096','版权声明','0908243','沪网文[2014]0557-107',
'(沪 )字第 1158 号','沪市文演(经)00-1060','上海市互联网违法和不良信息举报中心举报电话:021-62650919 客户邮箱:service@ikuaishou.com']
#5个主页面的共同链接页面,xpath定位的
def c():
    driver.find_element_by_xpath('//a[@class="aibbLogo"]').click()
    time.sleep(2)
    driver.find_element_by_xpath('//a[@class="huoxiuLogo"]').click()
    driver.find_element_by_xpath('//*[@id="index"]/div[2]/div[3]/div/div[2]/div[2]/a').click()
#5个主页面
def b(j):
    driver.find_element_by_link_text(j).click()
#5个主页面的共同链接页面
def a(i):
    driver.find_element_by_link_text(i).click()
#执行其中1页面(mv、歌手需要鼠标指上去并点击),加了判断
for j in links:
    driver=OpenUrl()
    if j==links[3] or j==links[4]:
        faxian=driver.find_element_by_link_text('发现')
        ActionChains(driver).move_to_element(faxian).perform()
        time.sleep(1)
        if j==links[3]:
            driver.find_element_by_xpath('//*[@id="header_nav"]/li[4]/dl/dd[1]/a').click()
        elif j==links[4]:
            driver.find_element_by_xpath('//*[@id="header_nav"]/li[4]/dl/dd[2]/a').click()
    else:
#执行其他4个主页面
        b(j)
#判断了5个主页中不同的链接并执行
    if j==links[0]:
        driver.find_element_by_link_text('打榜规则').click()
    elif j==links[1]:
        driver.find_element_by_xpath('//*[@id="mvdetails-zc"]/div[1]/div[3]/div[2]/div[2]/div[1]/div[2]/a/img').click()
    elif j==links[2]:
        driver.find_element_by_xpath('//*[@id="id-ui-videoitem"]/div[1]/div[2]/div[3]/div[3]/div/div[1]/div[1]/a/div[1]/img').click()
        driver.find_element_by_xpath('//*[@id="id-ui-videoitem"]/div[1]/div[2]/div[3]/div[3]/div/div[1]/div[2]/a[1]/div[2]').click()
    elif j==links[3]:
        driver.find_element_by_xpath('//*[@id="sing-zc"]/div[1]/div[3]/div/div[1]/a').click()
        driver.find_element_by_xpath('//*[@id="yi-list-con"]/div[1]/a/img').click()
    elif j==links[3]:
        driver.find_element_by_xpath('//*[@id="head_image"]/a/img')
#5个主页面中共同的链接并执行,link定位的
    for i in link:
        a(i)
#5个主页面中共同的链接并执行,xpath定位的
    c()
    driver.quit()



作者: 菜鸟@大虾    时间: 2017-2-28 09:46
根据童鞋贴的代码 个人有一下建议:
1:链接公用信息单独拉出来
2:自己封装click操作 调用时只需要传入元素定位的方式和元素标识,如element_click('xpath=/xxx')
3:可以把所有页面元素集中管理 比如用json或者xml
4:封装页面操作 参考PageObject模型
作者: 黑盒测试    时间: 2017-2-28 09:55
菜鸟@大虾 发表于 2017-2-28 09:46
根据童鞋贴的代码 个人有一下建议:
1:链接公用信息单独拉出来
2:自己封装click操作 调用时只需要传入 ...

好的 感谢建议  我再看看




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2