UI自動化之元素定位(xpath、css)

  很早之前就已經寫過自動化了,不過點著功能久了就會容易忘記元素定位,尤其是xpath和css定位,所以就花點時間做下總結收集。

xpath有兩種定位:

一.絕對路徑(不推薦使用,除非已經使用了所有方式仍然無法定位)
方法:根據實際目錄,逐層輸寫。
例子: find_element_by_xpath("/html/body/div[1]/span/input/a") ?# div[1]指第1個元素
二.相對路徑(推薦使用)

方法:找到元素有”精準元素“即唯一能標識的屬性;

# 1、通過id定位(以百度首頁為例)
driver.find_element_by_xpath("//*[@id='kw']").send_keys("test")
time.sleep(1)# 2、通過class定位
driver.find_element_by_xpath("//*[@class='s_ipt']").send_keys("test")# 3、通過name定位
driver.find_element_by_xpath("//input[@name='wd']").send_keys("test")# 4、通過其它屬性定位
driver.find_element_by_xpath("//*[@autocomplete='off']").send_keys("test")# 5、多個屬性組合定位(邏輯運算符and、or等)
driver.find_element_by_xpath("//*[@autocomplete='off' and @class='s_ipt']").send_keys("test")# 6、通過文本屬性定位
driver.find_element_by_xpath("//*[text()='新聞']")# 7、通過父元素定位子元素(層級關系)
driver.find_element_by_xpath("//*[@id='u1']/a[2]")  # 通過上一級的id對下一級a標簽進行定位(索引從1開始)# 8、通過子元素找父元素
driver.find_element_by_xpath("//*[@id='kw']/..")  # //*[@id='kw']/../.. 這個是找爺爺# 9、模糊匹配
driver.find_element_by_xpath("//a[contains(text(),'hao')]")     # 文本模糊匹配
driver.find_element_by_xpath("//input[contains(@class,'s_btn')]")   # class屬性模糊匹配,其它類似

?

CSS語法定位

?

# 1、通過id定位
driver.find_element_by_css_selector("#kw").send_keys("test")# 2、通過class定位(多個class屬性有空格的話,將空格換成.)
driver.find_element_by_css_selector(".s_ipt").send_keys("test")# 3、通過tag定位
driver.find_element_by_css_selector("input") # 定位所有input標簽# 4、通過其它屬性定位
driver.find_element_by_css_selector("[name='wd']").send_keys("test")# 5、通過父元素找子元素(組合定位)
driver.find_element_by_css_selector("#qrcode .qrcode-img")     # 通過id為qrcode上一級或上上級找尋下級class為qrcode-img的元素
driver.find_element_by_css_selector("qrcode .qrcode-img:nth-child(1)")     # 找剛剛上面結果的第一組元素,索引從1開始
driver.find_element_by_css_selector("#qrcode div.qrcode-img:nth-child(1)")    # 組合定位,div標簽下class為qrcode-img的元素

css更多操作請看下方

?

轉載于:https://www.cnblogs.com/leixiaobai/p/10438596.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249557.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249557.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249557.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

屬性編輯器PropertyEditor

在Spring配置文件里,我們往往通過字面值為Bean各種類型的屬性提供設置值:不管是double類型還是int類型,在配置文件中都對應字符串類型的字面值。BeanWrapper填充Bean屬性時如何將這個字面值轉換為對應的double或int等內部類型呢?我…

郵箱驗證

public class Emailstandard { /* * 以數字或字母開頭 * 之前可以含有數字,字母,下劃線,點 * 有且只有一個 * 之后只能含有數字,字母 * 必須以.com或者.cn結尾 * */ public static void main(String[] args) { Scanner sca new Scanner(…

python第二十八課——編碼小常識

2.內存和硬盤:內存:計算機硬件組成部分之一,它是一個容器,用來存儲數據;處理數據速度快,存儲數據量小;斷電死機數據會丟失,短暫性存儲數據硬盤:計算機硬件組成部分之一&a…

Javadoc 使用詳解

很多程序對Javadoc都不重視,認識不到Javadoc的作用,很多人都是這樣認為的:“我只要寫好功能就夠了,寫Javadoc太浪費時間,也沒啥作用,還不如用寫Javadoc的時間再多些個功能呢!”,我們…

Linux下查看當前文件大小的命令

1、ls -lht 列出每個文件的大小和當前目錄所有文件大小總和 2、du -sh * 列出當前文件夾下的所有子文件的大小 看你需要啥樣的,自己來吧 轉載于:https://www.cnblogs.com/xbxxf/p/9619818.html

(13)UniquePathIII

一、問題描述 給定一個二維數組。 數組只有一個元素是1,是起點數組只有一個元素是2,是終點數組中的0是必須經過的地方數組中的-1是障礙不可通過從起始點到終點一共有多少路徑? 二、思路 DFS 三、Code 1 package algorithm;2 3 /**4 * Create…

Spring IOC-BeanFactory的繼承體系結構

本文主要介紹BeanFactory以及它的各種繼承層級的接口、抽象類及實現類,因為內容很多,所以這里不介紹ApplicationContext繼承體系下的類(雖然ApplicationContext本質上也是BeanFactory,但是畢竟這這是我們平時接觸最多的兩種類別&a…

deepin15.7掛載/home到單獨的分區:

1、首先打開Gpart分區編輯器,找一個空閑的分區,調整好分區大小,格式化成ext4格式。 具體步驟為首先unmount所用到的盤,然后右擊該盤選擇format to ext4,最后點擊apply提交修改 2、記錄下分區的路徑,比如 /d…

Java使用Redis實現分布式鎖來防止重復提交問題

如何用消息系統避免分布式事務? - 少年阿賓 - BlogJavahttp://www.blogjava.net/stevenjohn/archive/2018/01/04/433004.html 【請求去重】java基于分布式鎖解決重復請求問題 - qq_41793222的博客 - CSDN博客https://blog.csdn.net/qq_41793222/article/details/830…

【PHP】xampp配置多個監聽端口和不同的網站目錄(轉)

轉自:https://blog.csdn.net/cc1314_/article/details/75646344 windows下使用xampp配置多個監聽端口和不同的網站目錄 一:配置Apache文件httpd.conf打開Apache的配置文件httpd.conf,可以通過點擊xampp的Apache的config下的Apache(httpd.conf…

本地連接虛擬機 Oracle數據庫 報ORA-12541:TNS:no listener

一、環境 本機環境:win10,pl/sql Developer 虛擬機環境:win10,oracle 11g 1.本機和虛擬機互相ping都可以ping通。 2.虛擬機監聽程序已啟動。 二、配置文件 1.本機 tnsname.ora 配置文件 local (DESCRIPTION   (ADDRESS_LIST   (ADDR…

Java消息中間件

1.概述 中間件 非底層操作系統軟件,非業務應用軟件,不是直接給最終用戶使用的,不能直接給客戶帶來價值的軟件統稱為中間件。 消息中間件 管制關注于數據的發送和接收,利用高效可靠的異步消息傳遞機制集成分布式系統。 優點 ① 解…

form 源碼刨析

def clean_name(self) value self.cleaned_data.get(name) if "金-瓶-梅" not in value: raise ValidationError("不符合要求") return value 重寫clean方法 轉載于:https://www.cnblogs.com/wuheng-123/p/9623289.html

兩道面試題

fi [] for i in range(3):def foo(x):print(x i) #由于函數在這時還沒有執行,在這里的i,指向的還是同一個IP地址,所以都是2.fi.appent(foo) for f in fi:f(2)答案:4,4,4 a [0, 1, 2, 3, 4] print(a[-6:6…

uiautomator2進階

點擊控件的具體位置 d(text"Settings").click(offset(0.5, 0.5)) 點擊控件的中間位置 d(text"Settings").click(offset(0, 0)) 點擊控件的左上方 d(text"Settings").click(offset(1, 1)) 點擊控件的右下方 拖動控件 d(text"Settings&quo…

LIS路徑記錄(UVA481)

出自一次很失敗的開學測試 LIS自然會做 可以參見:https://blog.csdn.net/Radium_1209/article/details/79704234 由于對于LIS的nlogn算法不熟悉,導致錯誤理解,記錄的路徑出現了問題,其中還用了n^2的算法記錄路徑(好理解…

Activemq源碼、編譯、導入idea、源碼調試總結

1、在本地下載源碼 在GitHub官網搜activemq,找到排名第一的,并打開,如圖所示,拷貝url地址。 activemq托管地址:https://github.com/apache/activemq.git 切換到git bash下,輸入命令: mkdir a…

activiti 視圖

1. application.properties增加如下配置 spring.activiti.database-schema-updatefalsespring.activiti.db-history-usedfalsespring.activiti.db-identity-usedfalse 2. 視圖sql -- 修改表名稱 ALTER TABLE act_id_user RENAME act_id_user_bak1; ALTER TABLE act_id_group RE…

ActiveMQ源碼解析 建立連接

作為一個消息中間件,有客戶端和服務端兩部分代碼,這次的源碼解析系列主要從客戶端的代碼入手,分成建立連接、消息發送、消息消費三個部分。趁著我昨天弄明白了源碼編譯的興奮勁頭還沒過去,今天研究一下建立連接的部分。 如果讀起…

原生Js_實現廣告彈窗

廣告樣式當頁面加載后5s刷新在右下角 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>Gary圖片輪播</title><style type"text/css">#ad{width:300px;height: 300px;background-color:antiquewhite…