web自動化學習01——單個元素定位方式

單個元素的定位方式有8種,分別是:css

  1. id :driver.find_element_by_id()html

  2. class_name:driver.find_element_by_class_name()python

  3. name:driver.find_element_by_name()web

  4. link_text:driver.find_element_by_link_text()chrome

  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()spa

  8. xpath:driver.find_element_by_xpath()code

經常使用的有:id、class_name、name、link_text、partial_link_text、xpathhtm

 

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()
相關文章
相關標籤/搜索