Selenium 用法和实例

Usage_Selenium

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2017-09-24 22:04:33
# @Author  : kangvcar (kangvcar@126.com)
# @Link    : http://www.github.com/kangvcar/
# @Version : $Id$

# from selenium import webdriver
# from selenium.webdriver.common.keys import Keys


## 模拟提交提交搜索的功能,首先等页面加载完成,然后输入到搜索框文本,点击提交
# driver = webdriver.Firefox()
# driver.get("http://www.python.org")
# assert "Python" in driver.title
# elem = driver.find_element_by_name("q")
# elem.send_keys("pycon")
# elem.send_keys(Keys.RETURN)
# print driver.page_source


# print '========================================================='

# ## 测试用例
# import unittest
# from selenium import webdriver
# from selenium.webdriver.common.keys import Keys

# # 测试用例是继承了 unittest.TestCase 类,继承这个类表明这是一个测试类。
# class PythonOrgSearch(unittest.TestCase):
# 	"""docstring for PythonOrgSearch"""
# 	# setUp方法是初始化的方法,这个方法会在每个测试类中自动调用。
# 	def setUp(self):
# 		self.driver = webdriver.Firefox()

# 	# 每一个测试方法命名都有规范,必须以 test 开头,会自动执行。
# 	def test_search_in_python_org(self):
# 		driver = self.driver
# 		driver.get("http://www.python.org")
# 		self.assertIn("Python", driver.title)
# 		elem = driver.find_element_by_name("q")
# 		elem.send_keys("pycon")
# 		elem.send_keys(Keys.RETURN)
# 		assert "No results found." not in driver.page_source

# 	# tearDown 方法会在每一个测试方法结束之后调用。
# 	#  close 方法相当于关闭了这个 TAB 选项卡,然而 quit 是退出了整个浏览器。
# 	def tearDown(self):
# 		self.driver.quit()

# if __name__ == '__main__':
# 	unittest.main()


# print '========================================================='

## 页面操作
# 
# 我们可以这样获取它
# element = driver.find_element_by_id("passwd-id")
# element = driver.find_element_by_name("passwd")
# element = driver.find_elements_by_tag_name("input")
# element = driver.find_element_by_xpath("//input[@id='passwd-id']")
# 获取了元素之后,下一步当然就是向文本输入内容了,可以利用下面的方法
# element.send_keys("some text")
# 同样你还可以利用 Keys 这个类来模拟点击某个按键。
# element.send_keys("and some", Keys.ARROW_DOWN)
# 用下面的方法来清除输入文本的内容。
# element.clear()

# print '========================================================='

## 填充表单
# 首先获取了第一个 select 元素,也就是下拉选项卡。然后轮流设置了 select 选项卡中的每一个 option 选项。
# 你可以看到,这并不是一个非常有效的方法。
# element = driver.find_element_by_xpath("//select[@name='name']")
# all_options = element.find_element_by_tag_name("options")
# for option in all_options:
# 	print "Value is: %s" % option.get_attribute("value")
# 	option.click()

# 其实 WebDriver 中提供了一个叫 Select 的方法,可以帮助我们完成这些事情。
# from selenium.webdriver.support.ui import Select
# select = Select(driver.find_element_by_name('name'))	#获取指定name的slelct
# select.select_by_index(index)	#根据索引来选择
# select.select_by_visible_text("text")	#根据文字来选择
# select.select_by_value(value)	#根据值来选择

# 取消全部选择怎么办呢?很简单
# select = Select(driver.find_element_by_id('id'))	#获取指定id的slelct
# select.deselect_all()		#取消全部选择

# 获取所有的已选选项
# select = Select(driver.find_element_by_xpath("xpath"))	#用xpath匹配select
# all_selected_options = select.all_selected_options	#.all_selected_options方法获取所有已选选项

# 获取所有可选选项
# options = select.options

# 如果你把表单都填好了,最后肯定要提交表单对吧
# driver.find_element_by_id("submit").click()

# print '========================================================='


##元素拖拽
# 要完成元素的拖拽,首先你需要指定被拖动的元素和拖动目标元素,然后利用 ActionChains 类来实现。
# source = driver.find_element_by_name("source")
# target = driver.find_element_by_name("target")
# from selenium.webdriver import ActionChains
# action_chains = ActionChains(driver)
# action_chains.drag_adn_drop(source, target).perform()

# print '========================================================='

## 页面切换
# 一个浏览器肯定会有很多窗口,所以我们肯定要有方法来实现窗口的切换。切换窗口的方法如下
#driver.switch_to_window("windowName")
# 另外你可以使用 window_handles 方法来获取每个窗口的操作对象。例如
#for handle in driver.window_handles:
#	driver.switch_to_window(handle)
# 另外切换 frame 的方法如下,这样焦点会切换到一个 name 为 child 的 frame 上。
#driver.switch_to_frame("frameName.0.child")

# print '========================================================='


## 弹窗处理
## 获取弹窗对象
# alert = driver.switch_to_alert()

# print '========================================================='

## 历史记录
# 操作页面的前进和后退功能
# driver.forward()
# driver.back()

# print '========================================================='

## Cookies处理
# 为页面添加 Cookies,用法如下
# Go to the correct domain
# driver.get("http://www.example.com")
# Now set the cookie. This one's valid for the entire domain
# cookie = {'name':'foo', 'value':'bar'}
# driver.add_cookie(cookie)

# 获取页面 Cookies,用法如下
# Go to the correct domain
# driver.get("http://www.example.com")
# Add now output all the available cookie for the currect URL
# driver.get_cookies()

# print '========================================================='

## 元素选取
# #单个元素选取							#多个元素选取
# find_element_by_id
# find_element_by_name 					find_elements_by_name
# find_element_by_xpath 				find_elements_by_xpath
# find_element_by_link_text 			find_elements_by_link_text
# find_element_by_partial_link_text 	find_elements_by_partial_link_text
# find_element_by_tag_name 				find_elements_by_tag_name
# find_element_by_class_name			find_elements_by_tag_name
# find_element_by_css_selector 			find_elements_by_css_selector

#另外还可以利用 By 类来确定哪种选择方式
# from selenium.webdriver.common.by import By
# driver.find_element(By.XPATH, '//button[text()="Some text"]')
# driver.find_elements(By.ID, 'dddd')
## By 类的一些属性如下
# ID = "id"
# XPATH = "xpath"
# LINK_TEXT = "link text"
# PARTIAL_LINK_TEXT = "partial link text"
# NAME = "name"
# TAG_NAME = "tag name"
# CLASS_NAME = "class name"
# CSS_SELECTOR = "css selector"

# print '========================================================='

## 页面等待
# Selenium 提供了两种等待方式,一种是隐式等待,一种是显式等待
# 显式等待(显式等待指定某个条件,然后设置最长等待时间。如果在这个时间还没有找到元素,那么便会抛出异常了。)
# from selenium import webdriver
# from selenium.webdriver.common.by import By
# from selenium.webdriver.support.ui import WebDriver
# from selenium.webdriver.support import expected_conditions as EC

# driver = webdriver.Firefox()
# driver.get("http://somedomain/url_that_delays_loading")
# try:
# 	element = WebDriverWait(driver, 10).until(
# 		EC.presence_of_element_located((By.ID, "someid"))
# 	)
# finally:
# 	driver.quit()
## 下面是一些内置的等待条件,你可以直接调用这些条件,而不用自己写某些等待条件了。
# title_is
# title_contains
# presence_of_element_located
# visibility_of_element_located
# visibility_of
# presence_of_all_elements_located
# text_to_be_present_in_element
# text_to_be_present_in_element_value
# frame_to_be_available_and_switch_to_it
# invisibility_of_element_located
# element_to_be_clickable – it is Displayed and Enabled.
# staleness_of
# element_to_be_selected
# element_located_to_be_selected
# element_selection_state_to_be
# element_located_selection_state_to_be
# alert_is_present


# 隐式等待(隐式等待比较简单,就是简单地设置一个等待时间,单位为秒)
# from selenium import webdriver
# driver = webdriver.Firefox()
# driver = implicitly_wait(10)
# driver.get("http://somedomain/url_that_delays_loading")
# myDynamicElement = driver.find_element_by_id("myDynamicElement")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值