from selenium import webdriver
from time import sleep
def myFirstDemo():
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
sleep(1)
driver.find_element_by_id('kw').send_keys('selenium')
driver.find_element_by_id('su').click()
sleep(3)
driver.quit()
# 封装myFirstDemo: 元素的定位
class MyFirstTest(object):
# 初始化
def __init__(self):
self.driver = webdriver.Chrome()
self.driver.get('http://www.baidu.com')
self.driver.maximize_window()
sleep(1)
# 退出窗口
def quitMyTest(self):
sleep(3)
self.driver.quit()
# 通过ID查找元素
def myTestById(self):
# id是唯一的
self.driver.find_element_by_id('kw').send_keys('selenium')
self.driver.find_element_by_id('su').click()
# 通过name查找元素
def myTestByName(self):
# find_element_by_name()可能返回多个元素,查找的时候返回第1个
# find_elements_by_name()返回一个集合
self.driver.find_element_by_name('wd').send_keys('selenium')
self.driver.find_element_by_id('su').click()
# 通过链接文本定位元素
def myTestByLinkText(self):
self.myTestById()
self.driver.find_element_by_link_text('百度首页').click()
# 通过部分链接文本定位
def myTestByPartialLinkText(self):
self.myTestById()
self.driver.find_element_by_partial_link_text('首页').click()
# 通过xpath定位
def myTestByXpath(self):
# 熟悉xpath语法
self.driver.find_element_by_xpath('//*[@id="kw"]').send_keys('极客时间')
# 通过标签名称定位
def myTestByTagName(self):
input = self.driver.find_element_by_tag_name('input')[0] # tag太多了
print(input)
# <selenium.webdriver.remote.webelement.WebElement (session="4bd3b42c106dce0c5f9d29b00cdce27f",
# element="8d873c4e-83ca-4fab-b542-9ef78d208a53")>
# 通过css选择器定位
def myTestCssSelect(self):
# copy -> css selector
self.driver.find_element_by_css_selector('#kw').send_keys('极客时间')
# 通过css class定位
def myTestCssClass(self):
self.driver.find_element_by_class_name('s_ipt').send_keys('极客时间')
def myTestByAll(self):
self.driver.find_element(By.ID, value='kw').send_keys('极客时间') # 默认使用ID
# WebDriver常用属性及核心方法
class LearnProperty(object):
# 初始化
def __init__(self):
self.driver = webdriver.Chrome()
self.driver.get('http://www.baidu.com')
self.driver.maximize_window()
sleep(1)
# 退出窗口
def quitMyTest(self):
sleep(3)
self.driver.quit()
# WebDriver常用属性
def testProperty(self):
# 浏览器名称
print(self.driver.name)
# 当前url
print(self.driver.current_url)
# 当前页面标题
print(self.driver.title)
# 当前页面源码
print(self.driver.page_source)
# 窗口句柄
print(self.driver.current_window_handle)
# 当前窗口所有句柄
# print(self.driver.current_handles)
# WebDriver核心方法
def testMethod(self):
self.driver.find_element_by_name('wd').send_keys('selenium')
self.driver.find_element_by_id('su').click()
# 后退
self.driver.back()
# 刷新
self.driver.refresh()
# 前进
self.driver.forward()
# 关闭当前Tab页
self.driver.close()
# quit():关闭浏览器
# 实现窗口之间的切换
def testSwitchWindows(self):
self.driver.find_element_by_link_text('新闻').click()
windows = self.driver.window_handles
count = 0
while count < 5:
for window in windows:
self.driver.switch_to.window(window)
count += 1
sleep(2)
# WebElement核心方法和属性
class TestWebElement(object):
# 初始化
def __init__(self):
self.driver = webdriver.Chrome()
self.driver.get('http://sahitest.com/demo')
self.driver.maximize_window()
sleep(1)
def quitMyTest(self):
sleep(3)
self.driver.quit()
# webElement常用属性
def webElementAttri(self):
self.driver.find_element_by_link_text('Link Test').click()
element = self.driver.find_element_by_id('t1')
print(element.id)
print(element.size)
print(element.rect)
print(element.tag_name)
print(element.text)
# WebElement的相关方法
def webElementMethod(self):
self.driver.find_element_by_link_text('Link Test').click()
element = self.driver.find_element_by_id('t1')
element.send_keys('input text')
# 获得属性值
print(element.get_attribute('value'))
print(element.get_attribute('type'))
print(element.get_attribute('name'))
# is_displayed():是否显示
print(element.is_displayed())
# 清空内容
element.clear()
# click():单击
self.driver.find_element_by_link_text('1234').click()
self.driver.find_element_by_link_text('Select Test').click()
ele = self.driver.find_element_by_id('s1Id')
# is_selected():是否被选中
print(ele.is_selected())
# is_enabled():是否可用
print(ele.is_enabled())
# value_of_css_property():css属性值
print(ele.value_of_css_property('value'))
if __name__ == '__main__':
# case = MyFirstTest()
# case.myTestById()
# case.myTestByName()
# case.myTestByTagName()
# case = LearnProperty()
# case.testSwitchWindows()
case = TestWebElement()
case.webElementMethod()
# 退出窗口
case.quitMyTest()
基于Python的Selenium学习(元素定位、WebElement核心方法和属性)
最新推荐文章于 2023-11-21 20:15:00 发布