[Selenium][Notes]Day2:八种元素定位方式

325 阅读1分钟

与name有关的有三种:

  • name:使用name属性值来定位
  • class name:使用cass属性值来定位
  • tag_name:使用标记名称来定位

与Iink相关的有两种:

  • link text:使用超级链接的全部文本来定位
  • partitial_link_text:使用超级链接的部分文本来定位

与id有关:

  • id:使用id属性值来定位

全能:

  • xpath:使用 xpath表达式来定位
  • css selector:使用css表达式来定位

语法格式: find_element_by_xxx

Code:

from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By


class TestCase(object):
    def __init__(self):
        self.driver = webdriver.Chrome()  # from .chrome.webdriver import WebDriver as Chrome  # noqa
        self.driver.get('http://www.baidu.com')
        self.driver.maximize_window()  # 窗口最大化
        sleep(1)

    # driver.find_element_by_id
    def test_id(self):
        # find_element_by_id('kw') id具有唯一性
        # Option 2:
        inputText = self.driver.find_element_by_id('kw')
        sleep(1)
        inputText.send_keys('Giphy')
        sleep(1)
        print(type(inputText))
        # <class 'selenium.webdriver.remote.webelement.WebElement'>
        clickButton = self.driver.find_element_by_id('su')  # 点击按钮搜索
        clickButton.click()
        sleep(2)
        self.driver.quit()

        # Option 1:
        # self.driver.find_element_by_name('wd').send_keys('Giphy')
        # sleep(2)
        # print(type(driver.find_element_by_name('wd')))
        # self.driver.find_element_by_id('su').click()
        # sleep(2)
        # self.driver.quit()

    # driver.find_element_by_name
    def test_name(self):
        # find_element_by_name('wd') 方法可能返回多个元素,返回第一个
        # find_element_by_name() 返回一个集合
        self.driver.find_element_by_name('wd').send_keys('GitHub')
        self.driver.find_element_by_id('su').click()
        sleep(3)
        self.driver.quit()

    # driver.find_element_by_link_text
    def test_linktext(self):
        self.test_id()
        self.driver.find_element_by_link_text('百度首页').click()
        sleep(2)
        self.driver.quit()

    # driver.find_element_by_partial_link_text
    def test_partial_link_text(self):
        self.test_id()
        self.driver.find_element_by_partial_link_text('首页').click()
        sleep(2)
        self.driver.quit()

    # self.driver.find_element_by_xpath
    def test_xpath(self):
        self.driver.find_element_by_xpath('//*[@id="kw"]').send_keys('Github')
        self.driver.find_element_by_id('su').click()
        sleep(2)
        self.driver.quit()

    # driver.find_element_by_tag_name
    def test_tag(self):
        input = self.driver.find_element_by_tag_name('input')
        print(input)

    # driver.find_element_by_css_selector
    def test_css_selector(self):
        self.driver.find_element_by_css_selector('#kw').send_keys('Github')
        self.driver.find_element_by_css_selector('#su').click()
        sleep(2)
        self.driver.quit()

    # driver.find_element_by_class_name
    def test_class_name(self):
        self.driver.find_element_by_class_name('s_ipt').send_keys('Github')
        self.driver.find_element_by_css_selector('#su').click()
        sleep(2)
        self.driver.quit()


if __name__ == '__main__':
    case = TestCase()
    # case.test_id()
    # case.test_name()
    # case.test_linktext()
    # case.test_xpath()
    # case.test_tag()
    # case.test_css_selector()
    case.test_class_name()