51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 955|回复: 0
打印 上一主题 下一主题

如何使用Selenium对满足条件的商品进行自动发货?

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:05
  • 签到天数: 1050 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2023-2-7 15:25:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    导入需要的库
    from selenium import webdriver
      from selenium.webdriver.common.by import By
      import time
      import pyautogui as ui



    初始化webdriver
      driver = webdriver.Chrome()



    窗口最大化
    driver.maximize_window()



      初始化一个网页(影刀商城) 用法:driver.get('网页的url')
     driver.get('https://demo-shop.winrobot360.com/user/login?redirect=%2Flist%2Ftable-list')



    隐式等待
      driver.implicitly_wait(5)



    通过id定位到用户名和密码框,并输入账号密码,函数用法:
      find_element(By.ID, 'id属性的名称')
      send_keys('要输入的内容')
    1. #定位元素,找到用户名输入框
    2.   user_name = driver.find_element(By.ID, 'username')
    3.   
    4.   #输入admin
    5.   user_name.send_keys('admin')
    6.   
    7.   #定位元素,找到密码输入框
    8.   pwd = driver.find_element(By.ID, 'password')
    9.   pwd.send_keys('admin')
    复制代码


    通过XPATH定位到登录按钮,并点击,函数用法:find_element(By.XPATH, 'XPATH路径')
    1. #定位登录按钮
    2.   login = driver.find_element(By.XPATH, '//*[@id="formLogin"]/div[3]/div/div/span/button')
    3.   #点击登录
    4.   login.click()
    复制代码


    跳转到网页,点击订单
    1. menu = driver.find_element(By.XPATH, "/html/body/div[1]/section/aside/div/ul/li[3]/a")
    2.   menu.click()
    复制代码


    找到存放页数的ul,找到总页数page_sum
    1.  ul = driver.find_element(By.XPATH, '//*[@id="app"]/section/section/main/div/div/div/div[2]/div/div/div/div[3]/div/div/ul')
    2.   ul_elements = ul.find_elements(By.TAG_NAME,'li')
    3.   page = ul_elements[-3]
    4.   page_sum = page.text
    复制代码


    开始批量发货,最外层循环次数为刚才找到的总页数
    1. for i in range(int(page_sum)):
    2.       print(i)
    3.       #每一页开始操作之前把滚动条置于最上方
    4.       js = "var q=document.documentElement.scrollTop=0"
    5.       driver.execute_script(js)
    6.       time.sleep(2)
    7.       trs = driver.find_elements(By.CLASS_NAME,"ant-table-row.ant-table-row-level-0")
    8.       print(trs)
    9.       for tr in trs:
    10.           tds = tr.find_elements(By.TAG_NAME,'td')
    11.           print(tds)
    12.           if tds[-2].text == '完成':
    13.               #点击完成
    14.               tds[-1].click()
    15.               #等待一下确认按钮,点击确定
    16.               time.sleep(0.5)
    17.               driver.find_element(By.CLASS_NAME,'ant-btn.ant-btn-primary.ant-btn-sm').click()
    18.               #按下箭头
    19.               ui.press('down')
    20.               ui.press('down')
    21.   
    22.       #点击下一页
    23.       ul_elements[-2].click()
    复制代码


    总体的代码
    from selenium import webdriver
      from selenium.webdriver.common.by import By
      import time
      import pyautogui as ui
      
      #初始化webdriver
      driver = webdriver.Chrome()
      
      #窗口最大化
      driver.maximize_window()
      
      #初始化一个网页
      driver.get('https://demo-shop.winrobot360.com/user/login?redirect=%2Flist%2Ftable-list')
      
      #隐式等待
      driver.implicitly_wait(5)
      
      #定位元素,找到用户名输入框
      user_name = driver.find_element(By.ID, 'username')
      
      #输入admin
      user_name.send_keys('admin')
      
      #定位元素,找到密码输入框
      pwd = driver.find_element(By.ID, 'password')
      pwd.send_keys('admin')
      
      #定位登录按钮
      login = driver.find_element(By.XPATH, '//*[@id="formLogin"]/div[3]/div/div/span/button')
      #点击登录
      login.click()
      
      #页面发生跳转,进入一个新的页面
      time.sleep(1)
      #点击订单
      menu = driver.find_element(By.XPATH, "/html/body/div[1]/section/aside/div/ul/li[3]/a")
      menu.click()
      time.sleep(2)
      
      #找到存放页数的ul,找到总页数page_sum
      ul = driver.find_element(By.XPATH, '//*[@id="app"]/section/section/main/div/div/div/div[2]/div/div/div/div[3]/div/div/ul')
      ul_elements = ul.find_elements(By.TAG_NAME,'li')
      page = ul_elements[-3]
      page_sum = page.text
      print(page)
      for i in range(int(page_sum)):
          print(i)
          #每一页开始操作之前把滚动条置于最上方
          js = "var q=document.documentElement.scrollTop=0"
          driver.execute_script(js)
          time.sleep(2)
          trs = driver.find_elements(By.CLASS_NAME,"ant-table-row.ant-table-row-level-0")
          print(trs)
          for tr in trs:
              tds = tr.find_elements(By.TAG_NAME,'td')
              print(tds)
              if tds[-2].text == '完成':
                  #点击完成
                  tds[-1].click()
                  #等待一下确认按钮,点击确定
                  time.sleep(0.5)
                  driver.find_element(By.CLASS_NAME,'ant-btn.ant-btn-primary.ant-btn-sm').click()
                  #按下箭头
                  ui.press('down')
                  ui.press('down')
      
      
          #点击下一页
          ul_elements[-2].click()
      文章知识点与官方知识档案匹配,可进一步学习相关知识






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

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-22 07:50 , Processed in 0.062433 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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