web常用操作和定位方法


1. 瀏覽器的常用操作:
1> 訪問某個頁面:頁面:driver.get('ht('t('http://www.baidu.com')
2> 最大化窗口:窗口:driver.maximize_win_window()
3> 返回上一個頁面:頁面:driver.back()
4> 前進到下一個頁面:頁面:driver.forward()
5> 涮新頁面:頁面:driver.refresh()
6> 獲取頁面的url:rl:driver.current_url_url
7> 獲取頁面的標題:標題:driver.title
8> 獲取句柄:句柄:driver.current_win_window_handle,唯一標識一次會話窗口的ID
9> 關閉當面頁面:driver.close()
10> 退出整個會話:driver.quit()
**注意:一個會話可能包括幾個頁面,退出整個會話,即整個瀏覽器的退出**
11>設置長和高的窗口:窗口:driver.set_win_window_size('800','600')
```python
import time
from selenium import webdriver

#開啟了一個與瀏覽器之間的會話
driver = = webdriver.Chrome()

#最大化窗口
#driver.maximize_win_window()
#設置長和高的窗口
driver.set_win_window_size('800','600')

#訪問百度
driver.get('ht('t('http://www.baidu.com')
#訪問谷歌
driver.get('ht('t('https://www.google.com')

#返回上一個頁面
time.sleep(2)
driver.back()

#前進到下一個頁面
time.sleep(2)
driver.forward()

#涮新當前頁面
time.sleep(2)
driver.refresh()

#獲取當前頁面的url
print(nt(driver.current_url_url)

#獲取當前頁面的標題
print(nt(driver.title)

#獲取當前頁面的句柄
print(nt(driver.current_win_window_handle)

#關閉窗口
time.sleep(2)
driver.quit()

```
2. web頁面包含元素(標簽),屬性,事件(元素的操作),有屬性和操作即可以構成一個類,這個類為WebElement類,代表一個DOM元素
3. <span class="bg s_ipt_wr quickdelete-wrap"></span>:表示span元素有3個class值(各值是以一個空格隔開),定位時只能取一個值
3. web元素的8種元素定位方式,返回的都是一個WebElement類的對象,即元素對象(元素實例)
1> id:絕對唯一,如一,如driver.find_ele_element_by_id('kw')
**動態id不能通過id定位,只在靜態id才能通過id定位**
2> 元素name屬性:並不絕對不唯一
a> driver.find_ele_element_by_name('wd') :若有多個元素的name屬性值為wd,那么直接獲取第一個
b> driver.find_ele_elements_by_name('wd') :返回列表,獲取所有元素的name屬性值為wd的元素
3> 元素的class屬性,若元素的class值有多個(各值是以一個空格隔開),定位時只能取一個值,則否會報錯Message: invalid selector: Compound class names not permitted
a> driver.find_ele_element_by_class_name('s_ipt_wr'):若有多個元素的class屬性值為s_ipt_wr,那么直接獲取第一個
b> driver.find_ele_elements_by_class_name('s_ipt_wr'):返回列表,獲取所有元素的class屬性值為s_ipt_wr的元素
**若元素的class值有多個(各值是以一個空格隔開),通過by_class_name定位時只能取一個值,則否會報錯**
4> 元素的標簽名,並不絕對唯一
a> driver.find_ele_element_by_tag_name('input')
b> driver.find_ele_elements_by_tag_name('input')
**3>和4>方法使用不多,如在需要獲取某一類數據時可以使用**
5> ,6> 針對a元素,通過鏈接的文本內容來定位元素,有完全匹配和部分匹配
a> driver.find_ele_element_by_link_text('新聞'):完全匹配鏈接的文本內容
b> driver.find_ele_element_by_partial_link_text('新'):部分匹配鏈接的文本內容
```python
import time
from selenium import webdriver

#開啟了一個與瀏覽器之間的會話
driver = = webdriver.Chrome()

#最大化窗口
driver.maximize_win_window()

#訪問百度
driver.get('ht('t('http://www.baidu.com')

#1. id,絕對唯一
# ele_id = = driver.find_ele_element_by_id('kw') #返回的是一個WebElement類的對象,即元素對象
# print(ele_id) #元素對象
# print(ele_le_id.get_att_attribute('class')) #獲取元素class屬性的值
# print(ele_le_id.tag_nam_name) #獲取元素的標簽名

#2.元素name屬性,並不絕對唯一
# ele_name = = driver.find_ele_element_by_name('wd') #若有多個元素name值為wd,那么直接獲取第一個
# eles_name = = driver.find_ele_elements_by_name('wd') #返回列表:獲取所有name值為wd的元素
# print(ele_name)
# print(eles_name)

#3.元素的class屬性,並不絕對唯一,若元素的class值有多個(各值是以一個空格隔開),定位時只能取一個值,則否會報錯Message: invalid selector: Compound class names not permitted
# ele_class = = driver.find_ele_element_by_class_name('s_ipt_wr')
# eles_class = = driver.find_ele_elements_by_class_name('s_ipt_wr')
# print(ele_class)
# print(eles_class)

#4.元素的標簽名,並不絕對唯一
# ele_tag = = driver.find_ele_element_by_tag_name('input')
# eles_tag = = driver.find_ele_elements_by_tag_name('input')
# print(ele_tag)
# print(eles_tag)

#5. 6. 針對a元素,通過鏈接的文本內容來定位元素,有完全匹配和部分匹配
# ele_link = = driver.find_ele_element_by_link_text('新聞')
# ele_part_link = = driver.find_ele_element_by_partial_link_text('新')
# print(ele_link)
# print(ele_part_link)
```
7> xpath(重點掌握)
a> 絕對定位:以/開頭,前后元素為父子關系,缺點太依賴元素之間的層級關系,一點變動就會導致定位不到
b> 相對定位:以//開頭,在頁面當中,有沒有這個元素,無關元素的位置和第幾代,語法//[@屬性名=屬性值],如//input[@id='kw']


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM