selenium自动化

from time import sleep
# 导包
from selenium import webdriver
# 导入事件包
from selenium.webdriver import ActionChains
# 显性等待导包
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import pytest


class Test_JD():
    def test_oo1(self):
        # 导入谷歌驱动
        web = webdriver.Chrome()
        # 窗口最大化
        web.maximize_window()
        url = "http://www.jd.com/"
        web.get(url)
        # 进入首页点击登录
        web.find_element_by_css_selector(".user_login").click()
        # 显性等待
        WebDriverWait(web, 30, 0.1).until(
            EC.presence_of_element_located((By.XPATH, "//*[@id='content']/div[2]/div[1]/div/div[3]/a")))
        # 匿名函数判断
        # lambda x: x.find_element_by_xpath("//*[@id='content']/div[2]/div[1]/div/div[3]/a"))
        # 登录页面点击账户登录
        web.find_element_by_xpath("//*[@id='content']/div[2]/div[1]/div/div[3]/a").click()
        # 定位账户输入框
        username = web.find_element_by_css_selector(".itxt")
        # 清空账户数据
        username.clear()
        # 进行输入
        username.send_keys(17639011503)
        # 定位密码输入框
        password = web.find_element_by_css_selector("#nloginpwd")
        # 清空输入框内容
        password.clear()
        # 进行输入密码
        password.send_keys('02207090jin')
        # 登录
        web.find_element_by_css_selector("#loginsubmit").click()
        # 隐性等待
        web.implicitly_wait(30)
        # 移动光标到指定导航栏展示出隐藏导栏
        ActionChains(web).move_to_element(web.find_element_by_xpath('//*[@id="J_cate"]/ul/li[2]/a[1]')).perform()
        # 修改js隐藏内容为可见内容
        # js = "document.getElementById(\"cate_item1\").style.display='block';"
        # web.execute_script(js)
        # 隐性等待
        web.implicitly_wait(30)
        # 定位隐藏内容进行点击 手机卡
        web.find_element_by_xpath('//*[@id="cate_item2"]/div[1]/div[2]/dl[2]/dd/a[2]').click()
        # 获取全部的url
        handle = web.window_handles
        # 切换到最后一个页面
        web.switch_to_window(handle[-1])
        # 点击商品
        web.find_element_by_xpath('//*[@id="J_goodsList"]/ul/li[1]/div/div[3]/a/em').click()
        # 获取全部的url
        handle = web.window_handles
        # 切换到最后一个页面
        web.switch_to_window(handle[-1])
        # 切换商品
        web.find_element_by_xpath('//*[@id="choose-attr-1"]/div[2]/div[7]/a/i').click()
        # 点击选择号码
        web.find_element_by_xpath('//*[@id="choose-btns"]/a').click()
        # 隐性等待
        web.implicitly_wait(30)
        # 选择第一个号码
        web.find_element_by_xpath('//*[@id="root"]/div[3]/div[2]/div[1]/div[3]/div/div[1]/ul/li[1]').click()
        # 点击下一步
        web.find_element_by_xpath('//*[@id="root"]/div[3]/div[2]/div[2]/div[4]/button').click()
        # 隐性等待
        web.implicitly_wait(30)
        # 定位机主姓名
        name = web.find_element_by_xpath('//*[@id="root"]/div[3]/div[2]/div[3]/div[1]/span[2]/input')
        # 清空机主姓名输入框
        name.clear()
        # 输入机主姓名
        name.send_keys('王富贵')
        # 定位身份证
        shenfenzheng = web.find_element_by_xpath('//*[@id="root"]/div[3]/div[2]/div[3]/div[2]/span[2]/input')
        # 清空输入框
        shenfenzheng.clear()
        # 输入身份证
        shenfenzheng.send_keys(410410410410410)
        # 点上协议对号
        web.find_element_by_xpath('//*[@id="root"]/div[3]/div[3]/div[3]/label/span').click()
        # 加入购物车
        web.find_element_by_xpath('//*[@id="root"]/div[3]/div[3]/div[5]/button').click()
        # 判断是否加入购物车
        assert web.find_element_by_xpath('//*[@id="result"]/div/div/div[1]/div[1]/h3').text == "商品已成功加入购物车!"
        # 断言页面不能为空
        # assert "No results found." not in web.page_source
        sleep(10)
        # 退出
        web.quit()


if __name__ == '__main__':
    # 运行所以当前文件夹所有py文件,不要将"JD_TEST.PY"写入
    pytest.main(["--html=./JD.html", "JD_TEST.PY", "-s"])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值