web自動化學習01——單個元素定位方式
阿新 • • 發佈:2021-07-22
單個元素的定位方式有8種,分別是:
-
id :driver.find_element_by_id()
-
class_name:driver.find_element_by_class_name()
-
name:driver.find_element_by_name()
-
link_text:driver.find_element_by_link_text()
-
partial_link_text:driver.find_element_by_partial_link_text()
-
tag_name:driver.find_element_by_tag_name()
-
css_selector:driver_find_element_by_css_selector()
-
xpath:driver.find_element_by_xpath()
常用的有:id、class_name、name、link_text、partial_link_text、xpath
from selenium import webdriver import time class elementLocator(): ''' 單個元素定位8種方式: 1)id :driver.find_element_by_id() 2)class_name:driver.find_element_by_class_name() 3)name:driver.find_element_by_name() 4)link_text:driver.find_element_by_link_text() 5)partial_link_text:driver.find_element_by_partial_link_text() 6)tag_name:driver.find_element_by_tag_name() 7)css_selector:driver_find_element_by_css_selector() 8)xpath:driver.find_element_by_xpath()''' def __init__(self): # 加啟動配置 option = webdriver.ChromeOptions() # 關閉“chrome正受到自動測試軟體的控制” # V75以及以下版本 # option.add_argument('disable-infobars') # V76以及以上版本 option.add_experimental_option('useAutomationExtension', False) option.add_experimental_option('excludeSwitches', ['enable-automation']) # 不自動關閉瀏覽器 option.add_experimental_option("detach", True) self.driver= webdriver.Chrome(chrome_options=option) self.driver.get("http://www.baidu.com") self.driver.maximize_window() #id定位 def elementLocator_by_id(self): #搜尋輸入框 search_input = self.driver.find_element_by_id("kw") #搜尋selenium search_input.send_keys("selenium") #搜尋按鈕 search_button = self.driver.find_element_by_id("su") #點選搜尋按鈕 search_button.click() time.sleep(2) self.driver.close() #class_name定位 def elementLocator_by_class_name(self): #搜尋輸入框 search_input = self.driver.find_element_by_class_name("s_ipt") #搜尋python search_input.send_keys("python") #搜尋按鈕 serch_button = self.driver.find_element_by_class_name("s_btn") #點選搜尋按鈕 serch_button.click() time.sleep(4) self.driver.close() #name定位 def elementLocator_by_name(self): # 搜尋輸入框 search_input = self.driver.find_element_by_name("wd") # 搜尋tester search_input.send_keys("tester") # 搜尋按鈕 serch_button = self.driver.find_element_by_class_name("s_btn") # 點選搜尋按鈕 serch_button.click() time.sleep(4) #self.driver.close() #link_text定位 def elementLocator_link_text(self): #新聞連結入口 news_href = self.driver.find_element_by_link_text("新聞") #點選新聞連結入口 news_href.click() time.sleep(4) self.driver.close() #partial_link_text定位 def elementLocator_partial_link_text(self): # 新聞連結入口 news_href = self.driver.find_element_by_link_text("新聞") # 點選新聞連結入口 news_href.click() #獲取所有handles all_handles = self.driver.window_handles #print(all_handles) #切換到新聞handle self.driver.switch_to.window(all_handles[1]) #print(self.driver.current_window_handle) #開啟"這道光,照亮前行之路——井岡山精神述評"這篇新聞 news_content = self.driver.find_element_by_partial_link_text("照亮前行之路") news_content.click() time.sleep(4) self.driver.close() #tag_name定位 def elementLocator_tag_name(self): ''' 根據標籤型別來定位,一般一個頁面同一個型別的標籤有很多,所以不採用這種方法進行定位 :return: ''' pass #css_selector定位 def elementLocator_css_selector(self): #定位新聞換一換圖示 news_refresh = self.driver.find_element_by_css_selector("#hotsearch-refresh-btn > span") #點選重新整理圖示 news_refresh.click() #xpath定位 def elementLocator_xpath(self): #定位到登入按鈕 login_button = self.driver.find_element_by_xpath("//a[@id='s-top-loginbtn']") #相對定位 #login_button = self.driver.find_element_by_xpath("/html/body/div/div/div[4]/a") #絕對定位(不建議) #點選登入按鈕 login_button.click() time.sleep(4) self.driver.close() elementLocator().elementLocator_xpath()