51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1554|回复: 2
打印 上一主题 下一主题

python+selenium链接页面自动化,求大师指点优化代码?

[复制链接]
  • TA的每日心情
    无聊
    2018-5-10 09:16
  • 签到天数: 172 天

    连续签到: 2 天

    [LV.7]测试师长

    跳转到指定楼层
    1#
    发表于 2017-2-27 18:09:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    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()


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-5-3 18:09
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

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

    评分

    参与人数 1测试积点 +10 收起 理由
    lsekfe + 10 积极回复获得测试积点10

    查看全部评分

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-5-10 09:16
  • 签到天数: 172 天

    连续签到: 2 天

    [LV.7]测试师长

    3#
     楼主| 发表于 2017-2-28 09:55:34 | 只看该作者
    菜鸟@大虾 发表于 2017-2-28 09:46
    根据童鞋贴的代码 个人有一下建议:
    1:链接公用信息单独拉出来
    2:自己封装click操作 调用时只需要传入 ...

    好的 感谢建议  我再看看
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-22 23:51 , Processed in 0.069322 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表