python实现web自动化常用方法

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()
 


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值