要想操作web界面上的元素,首先要定位到该元素,Selenium提供了定位元素的API,这些方法都被定义在WebDriver类中,这些方法都以find开头,例如:
方法名称 | 描述 |
---|---|
find_element_by_id | 通过id定位元素 |
find_element_by_xpath | 通过xpath定位元素 |
find_element_by_link_text | 通过连接文本定位元素 |
find_element_by_partial_link_text | 通过部分链接文本定位元素 |
find_element_by_name | 通过名称定位元素 |
find_element_by_tag_name | 通过标签名称定位元素 |
find_element_by_class_name | 通过css class定位元素 |
find_element_by_css_selector | 通过css选择器定位元素 |
id、name、class查看如下:
xpath、selector查看如下:
以百度为例,各种定位元素的方法如下:
from selenium import webdriver
from time import sleep
class TestCase(object):
def __int__(self):
self.driver = webdriver.Chrome()
self.driver.get("http://www.baidu.com")
self.driver.maximize_window()
sleep(1)
#通过id定位元素
def test_id(self):
element = self.driver.find_element_by_id('kw')
element.send_keys('selenium')
sleep(1)
self.driver.find_element_by_id('su').click()
# sleep(3)
# self.driver.quit()
#通过name定位元素
def test_name(self):
self.driver.find_element_by_name('wd').send_keys('selenium')
self.driver.find_element_by_id('su').click()
sleep(3)
self.driver.quit()
#通过linktext定位元素
def test_linktext(self):
self.test_id()
sleep(2)
self.driver.find_element_by_link_text('百度首页').click()
sleep(3)
self.driver.quit()
#通过xpath定位元素
def test_xpath(self):
self.driver.find_element_by_xpath('//*[@id="kw"]').send_keys('selenium')
sleep(1)
self.driver.find_element_by_id('su').click()
sleep(2)
self.driver.quit()
#通过css选择器定位元素
def test_css_selector(self):
self.driver.find_element_by_css_selector('#kw').send_keys('selenium')
sleep(1)
self.driver.find_element_by_id('su').click()
sleep(2)
self.driver.quit()
#通过css class定位元素
def test_class_name(self):
self.driver.find_element_by_class_name('s_ipt').send_keys('selenium')
sleep(1)
self.driver.find_element_by_id('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_css_selector()
case.test_class_name()