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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章