Selenium+Python系列(二) – 元素定位那些事
- 2022 年 10 月 21 日
- 筆記
- Selenium+Python
一、寫在前面
今天一實習生小孩問我,說哥你自動化學了多久才會的,咋學的?
自學三個月吧,真的是硬磕呀,當時沒人給講!
其實,學什麼都一樣,真的就是你想改變的決心有多強罷了。
二、元素定位
這部分內容可以說是重中之重了,也是大部分寫web
自動化的同學,必會入門技能之一了。
1、常見八種定位元素方法
我們還是直接來看源程式碼吧,示例如下:
# Licensed to the Software Freedom Conservancy (SFC) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The SFC licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# //www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
"""
The By implementation.
"""
class By:
"""
Set of supported locator strategies.
"""
ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
2、根據id定位元素
driver.find_element(By.ID,"kw")
3、根據xpath定位元素
driver.find_element(By.XPATH, '//*[@id="kw"]')
4、根據css定位器定位元素
driver.find_element(By.CSS_SELECTOR, '#kw')
5、根據name屬性值定位元素
driver.find_element(By.NAME, 'wd')
6、根據class_name類名定位元素
driver.find_element(By.CLASS_NAME, 's_ipt')
7、根據鏈接文本定位元素
driver.find_element(By.LINK_TEXT, 'hao123')
8、根據部分鏈接文本定位元素
driver.find_element(By.PARTIAL_LINK_TEXT, 'hao')
9、根據標籤名定位元素
driver.find_element(By.TAG_NAME, 'input')
三、find_element與find_elements區別
- find_elemnet:定位到是一個對象,定位不到則報錯。
- find_elemnets:定位到是一個含元素的列表,定位不到是一個空列表。
四、值得關注的問題
1、舉個栗子
# 這句運行直接報錯
driver.find_element_by_id('kw').send_keys('python')
# 這句就正常
driver.find_element(By.ID,"kw").send_keys(u"久曲健 部落格園")
2、為什麼報錯
來吧,還是直接看源程式碼學習,如下所示:
不難看出,最新版本只能通過find這種寫法去寫,已經不支援老版本寫法。
五、寫在最後
相信大家和我一樣,基本都喜歡白嫖別人的教程,把珍藏多年的教程翻出來學了起來!
看到這,你肯定會說,六哥,你居然也這樣嗎,那是必然的!!
細心點,你會發現,你收藏的教程或者學習影片都過時了,對,你沒看錯,它就是過時了,!
雖然元素定位很簡單,但是細緻很重要,光看不動手實踐,又怎麼會發現問題呢?
我是六哥,如果覺得寫的還不錯,請繼續關注我,並幫忙轉發文章到朋友圈,你的每一次轉發,對我都很重要!