selenium 使用随笔

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium 使用随笔相关的知识,希望对你有一定的参考价值。

   今天闲来无事,有朋友问到,如何使用selenium。于是便便写了个简单的脚本,用于讲解其基础用法。

   selenium常用作web自动化测试。通过跟python或其他语言的结合,可以驱动浏览器,并在浏览器上进行以往需要人工点击或者输入的操作(如输入文字,点击按钮等等)

    一 安装

    1 安装selenium

    目前selenium的最新版本为3.5.0,使用python的同学,安装起来非常方便,只需要以下一条语句:

      pip install selenium

    2 安装浏览器对应的插件,本例中使用的是win7b4bit,Firefox浏览器,所以要下载对应的驱动:geckodriver-v0.18.0-win64.zip。以下是下载的地址

      https://github.com/mozilla/geckodriver/releases

     下载之后,解压,并将目录添加到系统的环境变量中。由于我偷懒,这一步没有执行,直接在代码中指定了geckdriver所在的目录。

 二 实例

  本实例中,访问淘宝的注册页面,并进入到手机验证码的页面。

  1 要解决的问题:

    淘宝注册页面的主页,有一个协议弹出框:   技术分享

  点击“同意协议按钮后”,在页面中需要输入手机号,滑动解锁,点击“下一步”的按钮

 技术分享

  2 代码及注释

 1 # -*- coding: utf-8 -*-
 2 
 3 from selenium import webdriver
 4 from selenium.webdriver import ActionChains         #用于移动滑块
 5 import time
 6 
 7 #初始化驱动,并且打开网页
 8 driver = webdriver.Firefox(executable_path=D:/geckodriver/geckodriver.exe)
 9 driver.get(https://reg.taobao.com/member/reg/fill_mobile.htm)
10 
11 #点击确认按钮
12 alert = driver.find_element_by_id("J_AgreementBtn")
13 alert.click()
14 
15 #填入手机号
16 phone_input = driver.find_element_by_id("J_Mobile")
17 phone_input.clear()
18 phone_input.send_keys("135XXXXXXXX")    
19 
20 #移动滑块
21 source = driver.find_element_by_id("nc_1_n1z")
22 target = driver.find_element_by_xpath(//span[@data-nc-lang="_startTEXT"])
23 action_chains = ActionChains(driver)
24 
25 # 先选中滑块并按住鼠标左键,然后移动滑块
26 action_chains.click_and_hold(source).perform()
27 action_chains.move_by_offset(300,0).perform()
28 time.sleep(2)
29 
30 #注意,以下使用的是css_selector,因为使用id的话,会定位到未启用的按钮上而出错
31 #在本例中,此按钮未启用前的class为"btn btn-large tsl btn-disabled"
32 next_button = driver.find_element_by_css_selector([class="btn btn-large tsl"])
33 next_button.click()

 

以上是关于selenium 使用随笔的主要内容,如果未能解决你的问题,请参考以下文章

selenium 使用随笔

Selenium Xpath元素无法定位 NoSuchElementException: Message: no such element: Unable to locate element(代码片段

Selenium2.0 Webdriver 随笔

Selenium JavascriptExecutor 详解

Selenium JavascriptExecutor 详解

python selenium片段+网络驱动程序