4

selenium自动化测试(—):初学+元素定位

 2 years ago
source link: https://blog.csdn.net/weixin_46211269/article/details/120619194
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一、模块安装

创建一个新的项目:
在这里插入图片描述
新窗口:
在这里插入图片描述
模块安装:

pip install selenium

如下则安装成功:
在这里插入图片描述

二、驱动器安装配置

进入如下链接查看chrome版本:

chrome://version/

比如我的为:
在这里插入图片描述
可以看到我的版本为哦:

92.0.4515.131

现在进入如下链接:

http://npm.taobao.org/mirrors/chromedriver

进去之后看到只有这两个比较符合:
在这里插入图片描述
点击其中一个就行,进去之后点击win32:
在这里插入图片描述

点击后就会下载,解压得到exe,复制改路径加入到环境变量:
在这里插入图片描述
在这里插入图片描述

三、打开网页

我们以CSDN为例,后面也如此:

# coding=gbk
"""
作者:川川
@时间  : 2021/10/5 22:45
群:970353786
"""
from selenium import webdriver#导入模块
browser=webdriver.Chrome()#初始化
browser.get('https://www.csdn.net/?spm=1001.2014.3001.4476')#get请求C站

效果如下:
在这里插入图片描述
注意:如果你运行失败,请在初始化里面添加chromedriver路径,例子如下:

browser=webdriver.Chrome(executable_path=r'D:\360安全浏览器下载\chromedriver.exe')#初始化

我们再以打开淘宝为例:

https://www.taobao.com/
# coding=gbk
"""
作者:川川
@时间  : 2021/10/6 16:04
群:970353786
"""
from selenium import webdriver#导入模块
browser=webdriver.Chrome()#初始化
browser.get('https://www.taobao.com')#get请求淘宝网页

运行效果:
在这里插入图片描述

四、元素定位

这8种定位方式在Python selenium中所对应的方法为:

  • find_element_by_id()
  • find_element_by_name()
  • find_element_by_class_name()
  • find_element_by_tag_name()
  • find_element_by_link_text()
  • find_element_by_partial_link_text()
  • find_element_by_xpath()
  • find_element_by_css_selector()

4.1 id定位

使用 WebDriver 时要学习的最基本的技术之一是如何查找页面上的元素。 WebDriver 提供了许多内置的选择器类型,其中包括根据 id 属性查找元素。
语法:

driver.find_element(By.ID, "cheese")

以淘宝为例:

https://www.taobao.com/

分析:
在这里插入图片描述
则代码为:

# coding=gbk
"""
作者:川川
@时间  : 2021/10/6 15:46
群:970353786
"""
from selenium import webdriver#导入模块
browser=webdriver.Chrome()#初始化
browser.get('https://www.taobao.com')#get请求淘宝网页

id=browser.find_elements_by_id('q')
print(id)

运行效果:
在这里插入图片描述

4.2 class定位

定位class属性与搜索值匹配的元素(不允许使用复合类名)

以CSDN主页为例。
分析:
在这里插入图片描述

则代码为:

from selenium import webdriver#导入模块
browser=webdriver.Chrome()#初始化
browser.get('https://www.csdn.net/?spm=1001.2014.3001.4476')#get请求C站

top=browser.find_element_by_class_name('el-popover__reference')  #class定位

运行效果:
在这里插入图片描述

再或者是我自己的主页:

在这里插入图片描述
则代码为:

# coding=gbk
"""
作者:川川
@时间  : 2021/10/6 15:37
群:970353786
"""
from selenium import webdriver#导入模块
browser=webdriver.Chrome()#初始化
browser.get('https://blog.csdn.net/weixin_46211269?spm=1000.2115.3001.5343')#get请求C站

zuo=browser.find_element_by_class_name('user-profile-statistics-num')

运行效果如下:
在这里插入图片描述

4.3 txt文本定位

定位link text可视文本与搜索值完全匹配的锚元素

以淘宝为例:
在这里插入图片描述
则代码为:

# coding=gbk
"""
作者:川川
@时间  : 2021/10/6 15:55
群:970353786
"""
from selenium import webdriver#导入模块
browser=webdriver.Chrome()#初始化
browser.get('https://www.taobao.com')#get请求淘宝网页

href=browser.find_element_by_link_text('男装')#文本获取链接
print(href)

运行效果:
在这里插入图片描述

再或者定位零食
在这里插入图片描述
同样定位成功,可以常识打印为txt看看

from selenium import webdriver#导入模块
browser=webdriver.Chrome()#初始化
browser.get('https://www.taobao.com')#get请求淘宝网页

ling=browser.find_element_by_link_text('零食')
print(ling.text)

运行效果:
在这里插入图片描述

4.4 标签定位

tag name 定位标签名称与搜索值匹配的元素

分析:
在这里插入图片描述
则代码为:

from selenium import webdriver#导入模块
browser=webdriver.Chrome()#初始化
browser.get('https://www.taobao.com')#get请求淘宝网页

biao=browser.find_element_by_tag_name('input')
print(biao)

运行效果:
在这里插入图片描述

4.5 name定位

在这里插入图片描述

则代码为:

from selenium import webdriver#导入模块
browser=webdriver.Chrome()#初始化
browser.get('https://www.taobao.com')#get请求淘宝网页

n=browser.find_element_by_name('q')
print(n)

运行效果:
在这里插入图片描述

4.6 xpath定位

xpath语法,我推荐几篇文章,我就不在这里写了:
十五分钟掌握python爬虫XPath库
还有一个xpath工具也可以推荐大家使用:xpath helper

怎么用xpath定位呢?哎,我实在懒得找例子了,下面我构造一个例子吧。

5、具体定位方法

假如我们有一个Web页面,通过前端工具(如,Firebug)查看到一个元素的属性是这样的。

<html>
  <head>
  <body link="#0000cc">
    <a id="result_logo" href="/" onmousedown="return c({'fm':'tab','tab':'logo'})">
    <form id="form" class="fm" name="f" action="/s">
      <span class="soutu-btn"></span>
        <input id="kw" class="s_ipt" name="wd" value="" maxlength="255" autocomplete="

我们的目的是要定位input标签的输入框(以下方法都可以):
1.通过id定位

dr.find_element_by_id("kw")

2.通过name定位

dr.find_element_by_name("wd")

3.通过class name定位

dr.find_element_by_class_name("s_ipt")

4.通过tag name定位

dr.find_element_by_tag_name("input")

五、小总结

本篇内容为selenium的开始到元素定位,后续会继续更新selenium新的内容。

顺便为反馈大家对我的支持,顺此文送三本关于自然语言处理的书,对玩高阶python的粉丝会有很大的帮助。
这是一个北大高材生写的,把人工智能自然语言处理写得很通俗。
在这里插入图片描述
仅送出三本,参与方式:

  1. 在本文章评论区对本文评论
  2. 你的评论被别人点赞数量最高的前三位获奖
  3. 你可以去邀请别人给你点赞

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK