Python Selenium自动化入门

举报
Python爱好者 发表于 2020/12/29 23:33:58 2020/12/29
【摘要】 大家好,今天给大家带来的是Selenium自动化。 介绍 Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE、Mozilla Firefox、Mozilla Suite等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之...

大家好,今天给大家带来的是Selenium自动化。

介绍

Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE、Mozilla Firefox、Mozilla Suite等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建衰退测试检验软件功能和用户需求。支持自动录制动作和自动生成。Net、Java、Perl等不同语言的测试脚本。Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。

安装

pip install selenium

原理

selenium原理说简单点就是通过检索元素来触发指定事件来完成自动化。

初始化

初始化很简单:

导入模块

from selenium import webdriver

启动驱动

browser=webdriver.Chrome('C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe')

打开网页

browser.get('http://www.kugou.com/')

元素检索

在selenium里检索元素有八个方法:

id

name

className

tagName

linkText

partialLinkText

xpath

cssSelector

这边我们只介绍简单的六个,一般的掌握了这六个也够用了。

  1)查找元素的ID。

 

browser.find_element_by_id("Element's id")

 

  2)通过元素的name来定位。

 

browser.find_element_by_name("Element's name")

 

  3)通过所应用的样式表名className。

 

browser.find_element_by_class_name("class name")

 

  4)通过CSS应用特征。

 

find_element_by_css_selector("a[id='id']")

 

  5)通过链接的文本。

 

browser.find_element_link_name("link name")

 

  6)通过XPATH定位。

 

browser.find_element_by_xpath("//***[*='**']")

这边我们可以实现一个简单的酷狗听歌的脚本:

from selenium import webdriver

browser=webdriver.Chrome('C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe')

browser.get('http://www.kugou.com/')

input1=browser.find_element_by_css_selector('[type="text"]').send_keys('体面')

button1=browser.find_element_by_css_selector('.searh_btn').click()

checkbox1=browser.find_element_by_css_selector('.search_icon.checkall').click()

button2=browser.find_element_by_css_selector('.play_all').click()

基础好的可以试试360 haosou.com 的测试 :

#coding=utf-8

from selenium import webdriver

import os

import time

# set little time stop and big time stop for viewing changes

little_time_stop = 1

big_time_stop = 2

# 默认广告条数

ads_num_require = 8

# 请求连接

req_url = "http://www.haosou.com/s?ie=utf-8&shb=1&src=360sou_newhome&q=%E9%B2%9C%E8%8A%B1"

# 打开浏览器

browser = webdriver.Chrome()

# 开始请求

browser.get(req_url)

# 获取所有的广告

all_ads_li = browser.find_elements_by_css_selector('#e_idea_pp li')

# 当前广告条数

ads_num_current = len(all_ads_li)

print ("Has been got %d ads" %(ads_num_current))

# 如果广告条数与默认不符

if ads_num_current < ads_num_require:

print("The number of ads is not enough ( current : %d require: %d)" %(ads_num_current,ads_num_require))

# exit()

# 获取顶部连接

i = 0

for ads_li in all_ads_li:

time.sleep(big_time_stop)

i = i+1

print ("ads %d :" %i)

try:

main = ads_li.find_element_by_css_selector('h3 a')

except:

print ("\tError: ads %d cann't find" %(i))

else:

print ("\tReady: visit ads %d" %(i))

main.click()

print ("\tSucess: visit ads %d" %(i))

time.sleep(little_time_stop)

try:

img_link = ads_li.find_element_by_class_name('e_biyi_img')

except:

print ("\tError : no img in ads %d " %(i))

else:

print ("\tReady : visit img_link %d" %(i))

img_link.click()

print ("\tSuccess : visit img_link %d" %(i))

time.sleep(little_time_stop)

try:

child_div = ads_li.find_element_by_class_name('e_biyi_childLink');

except:

print ("\tError : no child link in ads %d" %(i))

else:

try:

child_links = child_div.find_elements_by_css_selector('a')

except:

print ("\tError : find child_links error")

else:

num_links = len(child_links)

print ("\tSuccess : there are %d child_links" %(num_links))

j = 0

for child_a in child_links:

j = j + 1

print ("\t\tReady : visit child link %d in ads %d" %(j, i))

child_a.click()

print ("\t\tSuccess : visit child link %d in ads %d" %(j, i))

time.sleep(little_time_stop)

print ("End and thanks for your using!")

# 下面代码选择取消注释

# 延时

time.sleep(5)

# 关闭当前窗口

browser.close()

# 关闭所有已经打开的窗口

browser.quit()

下期见!

文章来源: blog.csdn.net,作者:敲代码的灰太狼,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/tongtongjing1765/article/details/100581662

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。