selenium 定位元素的方式一共 8个 通过 find_element_by_**** 可以更为为8种方式的任何一个定位定的都是单个元素
id 查找
name 查找
class_name 查找
以上三个都是根据标签的属性值来查找的
<input id="sid" name="sname" class="sclass"
tag_name基于多个同样的标签在同一个页面
tag_name是根据标签名来进行定位 显示的第一个或者是唯一的一个标签
link_text是根据带有超链接功能的字符(汉字 字母 数字 特殊符号)
是写超链接的文字
partial_link_text 是根据带有超链接功能的字符的中一个字符(但是在同一页面进行查找的时候一定要注意是否重复的字符)
xpath 是根据firexpath的插件来进行使用
css_selecto 是根据css来查找定位路径
列表为一个
查找多个元素的的时候
find_elements_by_
1.通过使用name与id用来执行输入要搜索内容并点击进行搜索
from selenium import webdriver
wb = webdriver.Firefox()
wb.get("http://www.baidu.com")
idNme = wb.find_element_by_id("kw")
idNme.send_keys("selenium")
wb.find_element_by_id("su").click()
1.通过使用name与id用来执行输入要搜索内容并点击进行搜索
from selenium import webdriver
wb = webdriver.Firefox()
wb.get("http://www.baidu.com")
idNme = wb.find_element_by_id("kw")
idNme.send_keys("selenium")
wb.find_element_by_id("su").click()
2.通过class_name执行翻页
wb = webdriver.Firefox()
wb.get("https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=06074089_9_pg&wd=%E5%B0%8F%E8%AF%B4&rsv_pq=e4252067000f0f00&rsv_t=927eo6WbBvfHJr7CXHjAprEagd2hsZw%2Be6ijodw3ag%2BVtqkXq%2BoQJhF6KsKhTm4tvhsCHg&rqlang=cn&rsv_enter=0&rsv_dl=tb&rsv_sug3=10&rsv_sug1=10&rsv_sug7=101&inputT=3608&rsv_sug4=4192")
wb.find_element_by_class_name("n").click()
3.通过name来进行页面登录
wb = webdriver.Firefox()
wb.get("http://www.renren.com")
name = wb.find_element_by_name("email")
name.send_keys("1733933****")
namew = wb.find_element_by_name("password")
namew.send_keys("fan密码****")
wb.find_element_by_id("login").click()
4.通过tag_name来执行
wb = webdriver.Firefox()
wb.get("http://cn.bing.com")
wb.find_element_by_tag_name("input").click()
5.通过link_text执行标签检索并进入
wb = webdriver.Firefox()
wb.get("http://bj.58.com")
wb.find_element_by_link_text("二手房").click()
6.通过partial_link_text执行标签检索并进入(模糊查询)
wb = webdriver.Firefox()
wb.get("http://bj.58.com")
wb.find_element_by_partial_link_text("二手").click()
7.通过xpath地址进入详情(使用inspect in FirePath进行来选择元素并选择xPath路径地址并复制,粘贴到代码的xPath路径中)
wb = webdriver.Firefox()
wb.get("https://movie.douban.com/")
wb.find_element_by_xpath(".//*[@id='screening']/div[1]/h2/span[2]/a").click()
8.通过css_selector选择器定位,查看元素,选择元素,点击列表中的item的标题,将选中的右键选择唯一选择器进行复制
driver = webdriver.Firefox()
driver.get("http://www.ziroom.com/z/z1/?utm_source=baidu&utm_medium=cpc&utm_term=%E8%87%AA%E5%A6%82&utm_content=ZFDYBJ17721&utm_campaign=PC-ZFJHBJ41")
list = driver.find_elements_by_css_selector("div.item> div:nth-child(2) > h5:nth-child(1) > a:nth-child(1)")
9.通过使用find_elements_by_css_selector查找当前列表所有的标题以及连接地址,查看元素,选择元素,点击列表中的item的标题,将选中的右键选择唯一选择器进行复制,将div.item后的:以及nth - child(2)删除,列出当前列表所有的
driver = webdriver.Firefox()
driver.get("http://www.ziroom.com/z/z1/?utm_source=baidu&utm_medium=cpc&utm_term=%E8%87%AA%E5%A6%82&utm_content=ZFDYBJ17721&utm_campaign=PC-ZFJHBJ41")
list = driver.find_elements_by_css_selector("div.item> div:nth-child(2) > h5:nth-child(1) > a:nth-child(1)")
for x in list:
print("标题是:",x.text)
print(x.get_attribute('href'))
10.页面表单切换(比如其他页面值都是动态值,通过tag_name来进行查找,用switch_to.frame(进行切换)
from selenium import webdriver
webdriver = webdriver.Firefox()
webdriver.get("https://www.188.com/")
webdriver.find_element_by_class_name("j-gopass").click()
ifname = webdriver.find_element_by_tag_name("iframe")
webdriver.switch_to.frame(ifname)
number = webdriver.find_element_by_name("email")
number.send_keys("17339333520")
passwd = webdriver.find_element_by_name("password")
passwd.send_keys("fan_33520")
webdriver.find_element_by_id("dologin").click()
11.
xml类:
<?xml version="1.0" standalone="yes"?>
<RECORDS>
<RECORD>
<username>17339333520</username>
<passwords>fan_33520</passwords>
</RECORD>
<RECORD>
<username>李建国_ljg</username>
<passwords>lijianguo123</passwords>
</RECORD>
</RECORDS>
解析类:解析成列表
from xml.dom.minidom import parse
class Read():
def rd(self):
rootuser = parse("users.xml")
records = rootuser.documentElement
record = records.getElementsByTagName("RECORD")
for x in record:
username = x.getElementsByTagName("username")[0]
print(username.childNodes[0].data)
passwords = x.getElementsByTagName("passwords")[0]
print(passwords.childNodes[0].data)
if __name__=='__main__':
rd = Read()
rd.rd()
解析为元组:
from xml.dom.minidom import parse
class Red():
def rxml(self):
minidoms = parse("users.xml")
records= minidoms.getElementsByTagName("RECORDS")[0]
record = records.getElementsByTagName("RECORD")[0]
username = record.getElementsByTagName("username")[0].firstChild.data
passwords = record.getElementsByTagName("passwords")[0].firstChild.data
return username,passwords
if __name__=='__main__':
rd = Red()
rd.rxml()