Selenium 八大元素定位方式

UI自動化測本質無非就是: 定位元素 -> 操做元素 -> 模擬頁面動做 -> 斷言結果 -> 生成測試報告。
因此咱們作UI自動化的第一步就是定位元素,若是連元素都定位不到就更沒必要說接下來的操做。
本篇隨筆即是關於Selenium八大元素定位方式,讓你成功定位元素。
php

  1. find_element_by_idcss

    # -*- coding:utf-8 -*-
    # 做者:IT小學生蔡坨坨
    # 時間:2020/12/13 13:42
    
    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome()  # 實例化
    
    # demo01:
    # 打開雲商網站
    driver.get("http://101.133.169.100/yuns/index.php")
    # 窗口最大化
    driver.maximize_window()
    time.sleep(2)
    
    # 點擊個人購物車進行跳轉
    driver.find_element_by_id('cart_num').click()
    time.sleep(2)
    
    # demo02:
    # 打開百度,搜索框中輸入 編測編學,點擊百度一下
    driver.get("http://www.baidu.com")
    time.sleep(2)
    driver.find_element_by_id("kw").send_keys("編測編學")
    time.sleep(2)
    driver.find_element_by_id("su").click()
    time.sleep(3)
    
    driver.quit()
  2. find_element_by_namehtml

    # -*- coding:utf-8 -*-
    # 做者:IT小學生蔡坨坨
    # 時間:2020/12/13 13:53
    
    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome()
    driver.get('http://101.133.169.100/yuns/index.php')
    
    time.sleep(2)
    
    # demo01:
    # 搜索框中輸入耐克
    # 只有可輸入的控件才能使用send_keys()方法,好比input控件。
    driver.find_element_by_name('key').send_keys('耐克')
    time.sleep(2)
    
    # demo02:
    # 清空搜索框中的信息
    driver.find_element_by_name("key").clear()
    
    time.sleep(3)
    driver.quit()
  3. find_element_by_class_namepython

    # -*- coding:utf-8 -*-
    # 做者:IT小學生蔡坨坨
    # 時間:2020/12/15 16:26
    
    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome()
    
    # 打開雲商網站
    driver.get("http://101.133.169.100/yuns/index.php")
    driver.maximize_window()
    time.sleep(2)
    
    # demo01:
    # 搜索框中輸入 女裝
    driver.find_element_by_class_name("but1").send_keys("女裝")
    time.sleep(2)
    
    # demo02:
    # 點擊搜索
    driver.find_element_by_class_name("but2").click()
    time.sleep(3)
    
    # 注意:若是class name是一個複合類(帶有空格),則沒法定位到元素
    # 可使用複合類的部分單詞去定位,可是不建議,由於可能會定位到多個元素
    # driver.get("http://www.baidu.com")
    # time.sleep(2)
    # driver.find_element_by_class_name("bg s_btn btn_h btnhover")  # NoSuchElementException
    
    driver.quit()
  4. find_element_by_link_textweb

    # -*- coding:utf-8 -*-
    # 做者:IT小學生蔡坨坨
    # 時間:2020/12/15 17:44
    
    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome()
    
    driver.get("http://101.133.169.100/yuns/index.php")
    driver.maximize_window()
    time.sleep(2)
    
    # demo01:
    # 點擊 T恤男2016
    # 精確匹配超連接載體
    driver.find_element_by_link_text("T恤男2016").click()
    time.sleep(2)
    
    # demo02;
    # 點擊聯繫客服
    driver.find_element_by_link_text("聯繫客服").click()
    time.sleep(2)
  5. find_element_by_partial_link_text學習

    from selenium import webdriver
    import time
    
    driver = webdriver.Chrome()
    
    driver.get("http://101.133.169.100/yuns/index.php")
    driver.maximize_window()
    time.sleep(2)
    
    # demo01:
    # 點擊 9.9搶大牌
    # partial_link_text 模糊匹配超連接載體
    driver.find_element_by_partial_link_text("搶大牌").click()
    time.sleep(2)
    
    # demo02:
    # 點擊 家裝節
    driver.find_element_by_partial_link_text("家裝").click()
    time.sleep(2)
    
    driver.quit()
  6. XPath定位詳解及高級方法探究測試

# -*- coding:utf-8 -*-
# 做者:IT小學生蔡坨坨
# 時間:2020/12/13 14:06

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time

driver = webdriver.Chrome()
# 打開雲商網站
driver.get("http://101.133.169.100/yuns/index.php")
# 窗口最大化
driver.maximize_window()
time.sleep(2)

# demo01:
# 絕對路徑
# 搜索框輸入 阿迪達斯
# XPath的下標是從1開始的
driver.find_element_by_xpath("/html/body/div[2]/div/div[2]/div[1]/form/input[1]").send_keys("阿迪達斯")
time.sleep(2)

# demo02:
# 絕對路徑
# 點擊搜索
driver.find_element_by_xpath("/html/body/div[2]/div/div[2]/div[1]/form/input[2]").click()
time.sleep(2)

# demo03:
# 絕對路徑
# 點擊 芭芭鴨
driver.find_element_by_xpath("/html/body/div[4]/div/div[2]/dl/dd/a[31]").click()
time.sleep(2)

# demo04:
# 相對路徑
# 搜索框輸入 女裝
# XPath相對路徑以 // 開頭,經過屬性匹配 @class=
driver.find_element_by_xpath("//input[@class='but1']").send_keys("女裝")
time.sleep(2)

# demo05;
# 清空搜索框中的內容
# 經過多個屬性匹配,使用and鏈接
driver.find_element_by_xpath("//input[@class='but1' and @name='key']").clear()
time.sleep(2)

# demo06:
# 搜索框輸入 童裝
# 經過屬性模糊匹配 [contains(@屬性名,'屬性值')]
driver.find_element_by_xpath("//input[contains(@placeholder,'請輸入')]").send_keys("童裝")

# demo07;
# 點擊搜索
driver.find_element_by_xpath("//form/input[2]").click()
time.sleep(2)

# demo08:
# 點擊 個人購物車
driver.find_element_by_xpath("//div[@class='small_cart_name']/i").click()
time.sleep(2)

# demo09:
# 點擊如今就去購物
# 經過 * 匹配
driver.find_element_by_xpath("//*[@class='r']/a").click()
time.sleep(2)

# demo10:
# 點擊登陸 跳轉到登陸頁面
driver.find_element_by_xpath("//div/a").click()
time.sleep(2)

# demo11:
# 輸入用戶名:15059224492
driver.find_element_by_xpath("//div[@class='binput']/input[@name='username']").send_keys("15059224492")
time.sleep(1)

# demo12;
# 輸入密碼:123456
driver.find_element_by_xpath("//input[@name='password']").send_keys("123456")
time.sleep(1)

# demo13:
# 點擊登陸按鈕
driver.find_element_by_xpath("//input[@name='submit']").click()
time.sleep(2)

# demo14:
# 點擊個人訂單
driver.find_element_by_xpath("//div[@class='help']/a[2]").click()
time.sleep(2)

# demo15:
# 點擊收貨地址
driver.find_element_by_xpath("//div[@class='left']/dl/dd[3]/a").click()
time.sleep(2)

# demo16;
# 點擊 新增收貨地址
driver.find_element_by_xpath("//a[@id='add_address']").click()
time.sleep(2)

# demo17;
# 輸入姓名:蔡坨坨
driver.find_element_by_xpath("//input[@id='recive_name']").send_keys("蔡坨坨")
time.sleep(1)
# 輸入手機:15059224499
driver.find_element_by_xpath("//input[@name='mobile']").send_keys("15059224499")
time.sleep(1)

# 選擇省市區
driver.find_element_by_xpath("//span[@class='area_name']").click()
time.sleep(2)
# 選擇陝西省
driver.find_element_by_xpath("//div/a[27]").click()
time.sleep(2)
# 鼠標移到選擇省市區
ele = driver.find_element_by_xpath("//span[@class='area_name']")
ActionChains(driver).move_to_element(ele).perform()
time.sleep(2)
# 選擇西安市
driver.find_element_by_xpath("//div[@class='conbox'][2]/a[1]").click()
time.sleep(2)
# 鼠標移到選擇省市區
ActionChains(driver).move_to_element(ele).perform()
time.sleep(2)
# 選擇市轄區
driver.find_element_by_xpath("//div[@class='conbox'][3]/a[1]").click()
time.sleep(2)

# 輸入詳細地址
driver.find_element_by_xpath("//input[@placeholder='收件人詳細地址']").send_keys("編測編學")
time.sleep(1)

# demo18:
# 點擊確認,提示保存成功
driver.find_element_by_xpath("//div[2]/div/div[3]/a[2]").click()
time.sleep(3)

driver.quit()
7. CSS定位詳解及高級語法詳解
# -*- coding:utf-8 -*-
# 做者:IT小學生蔡坨坨
# 時間:2020/12/13 14:07

from selenium import webdriver
import time

driver = webdriver.Chrome()

# 打開雲商網站
driver.get("http://101.133.169.100/yuns/index.php")
driver.maximize_window()
time.sleep(2)

# demo01:
# 絕對路徑,使用 > 分隔,在搜索框中輸入童裝
# CSS Selector下標從1開始,跟XPath同樣
driver.find_element_by_css_selector("html>body>div>div>div>div>form>input:nth-child(1)").send_keys("童裝")
time.sleep(2)

# demo02:
# 絕對路徑,使用 空格 分隔,點擊「家裝節」進行跳轉
driver.find_element_by_css_selector("html body div.logo_bar div div.sch div.schhot a:nth-child(2)").click()
time.sleep(2)

# demo03:
# 絕對路徑,使用 > 加 空格 分隔,點擊「T恤男2016」進行跳轉
driver.find_element_by_css_selector("html body div.logo_bar div > div.sch > div.schhot > a:nth-child(5)").click()
time.sleep(2)

# demo04:
# 相對路徑,經過class選擇器定位元素,清空搜索框中的文本信息
# class選擇器: .
driver.find_element_by_css_selector("input.but1").clear()
time.sleep(2)

# demo05:
# 經過class選擇器定位元素,在搜索框中輸入女裝
driver.find_element_by_css_selector(".but1").send_keys("女裝")
time.sleep(2)

# demo06:
# 經過class選擇器定位元素,點擊搜索按鈕
driver.find_element_by_css_selector(".but2").click()
time.sleep(2)

# demo07:
# 經過id選擇器定位元素,點擊購物車
# id選擇器: #
driver.find_element_by_css_selector("i#cart_num").click()
time.sleep(2)

# demo08:
# first-child,點擊首頁跳轉至首頁
driver.find_element_by_css_selector(".help>a:first-child").click()
time.sleep(2)

# demo09:
# 經過id選擇器定位元素,點擊購物車
driver.find_element_by_css_selector("#cart_num").click()
time.sleep(2)

# demo10:
# last-child,點擊聯繫客服進行跳轉
driver.find_element_by_css_selector(".help>a:last-child").click()
time.sleep(2)

# demo11:
# 經過屬性定位,注意與XPath區別,在搜索框輸入拖鞋
driver.find_element_by_css_selector("input[placeholder='請輸入你要查找的關鍵字']").send_keys("拖鞋")
time.sleep(2)

# demo12:
# 經過多個屬性定位,注意與XPath區別,清空搜索框中的文本信息
driver.find_element_by_css_selector("input[name='key'][class='but1']").clear()
time.sleep(2)

# demo13:
# 倒序 nth-last-child(),點擊首頁進行跳轉
driver.find_element_by_css_selector(".help>a:nth-last-child(3)").click()
time.sleep(2)

# demo14:
# 在搜索框中輸入球鞋
driver.find_element_by_css_selector("div[class='schbox']>form>input:nth-child(1)").send_keys("球鞋")

# demo15:
# css_selector 不區分乾兒子和親兒子,
# 若一個標籤下有多個同級標籤,雖然這些同級標籤的tag name不同,可是他們是放在一塊兒排序的
# 打開百度,在搜索框中輸入 編測編學 ,點擊百度一下
driver.get("http://www.baidu.com")
driver.maximize_window()
time.sleep(3)
driver.find_element_by_css_selector("form#form>span:nth-child(8)>input").send_keys("編測編學")
driver.find_element_by_css_selector("form#form>span:nth-child(9)>input").click()
time.sleep(3)

# demo16;
# 點擊第一個搜索結果進入編測編學官網
driver.find_element_by_css_selector("div[class='result c-container new-pmd'][id='1']>h3>a").click()
time.sleep(3)
# 列出全部句柄
handles = driver.window_handles
print(handles)
# 打印當前句柄
print(driver.current_window_handle)
# 第一個窗口的索引是0
driver.switch_to.window(handles[1])
time.sleep(2)

# demo17:
# 點擊測試論壇
driver.find_element_by_css_selector("div[class='nexnav']>ul>:nth-child(4)>a").click()
time.sleep(3)

# demo18:
# 點擊 編測編學軟件實戰訓練班學習大綱
driver.find_element_by_css_selector("#portal_block_48_content>h5>a").click()
time.sleep(5)

# 關閉當前窗口
driver.close()
time.sleep(3)

# 關閉全部窗口
driver.quit()
  1. find_elements_by_tag_name網站

    tag = driver.find_elements_by_tag_name("input")
相關文章
相關標籤/搜索