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