15. python+selenium-webdriver2实战练习
2014-07-23 14:49
295 查看
借鉴张飞同学的HTML来进行的python-webdriver实战,文件下载路径:http://files.cnblogs.com/hugh007/demo.zip
![](data:image/png;base64,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)
代码如下:
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.alert import Alert
from selenium.webdriver.support.ui import WebDriverWait
#from selenium.webdriver.support import expected_conditions as EC
#from selenium.webdriver.common.by import By
import os
class Demo(object):
def __init__(self):
self.dr = webdriver.Chrome()
#Goto
def test_goto(self,url):
self.dr.get(url)
#Quit
def test_quit(self):
self.dr.quit()
#Input Text
def test_input(self,value):
input_element = self.dr.find_element_by_id('user')
input_element.send_keys(value)
sleep(2)
input_element.clear()
sleep(2)
input_element.send_keys(value)
#get the attribute value
text = input_element.get_attribute("value");
print text
#Link
def test_link(self):
link_element = self.dr.find_element_by_link_text('baidu')
#get the link address
href = link_element.get_attribute("href")
print href
#get the link value
text = link_element.text
print text
link_element.click()
self.dr.back()
#Single Select
def test_select(self):
select = Select(self.dr.find_element_by_name('select'))
select.select_by_index(1)
sleep(2)
select.select_by_visible_text("Audi")
sleep(2)
select.select_by_value('opel')
# 选择下拉菜单中的最后一项
dr.find_element_by_tag_name('select').find_elements_by_tag_name('option')[-1].click()
#RadioBox
def test_radio(self):
radioboxes = self.dr.find_elements_by_name('identity')
for radiobox in radioboxes:
radiobox.click()
sleep(2)
#CheckBox
def test_checkbox(self):
checkboxes = self.dr.find_elements_by_css_selector('input[type=checkbox]')
for checkbox in checkboxes:
checkbox.click()
sleep(2)
self.dr.find_elements_by_css_selector('input[type=checkbox]').pop().click()
# local single Radiobox and CheckBox
#dr.find_element_by_xpath("//tr[4]/td[2]/div/input[3]").click()
#dr.find_element_by_xpath("//input[@type='checkbox'][@name='checkbox1']").click()
# button
def test_button(self):
button_element = self.dr.find_element_by_class_name("button")
button_element.click
button = button_element.is_enabled()
print button
#ActionChains
def test_action_chains(self):
"""
eg
menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")
actions = ActionChains(driver)
actions.move_to_element(menu)
actions.click(hidden_submenu)
actions.perform()
"""
alert_element = self.dr.find_element_by_class_name("alert")
actions = ActionChains(self.dr)
actions.click(alert_element)
actions.perform()
sleep(2)
#popped up Alert
def test_alert(self):
alerts = Alert(self.dr)
print alerts.text
alerts.accept()
#alerts.dismiss()
#upload
def test_upload(self, filepath):
#JavascriptExecutor j= (JavascriptExecutor)driver;
#j.executeScript("document.findElementById('load').style.display='block'; ");
upload_element = self.dr.find_element_by_id("load")
upload_element.send_keys(filepath)
def test_multiple_windows(self):
element = self.dr.find_element_by_class_name('open')
element.click()
def test_action(self):
action_element= self.dr.find_element_by_class_name("over")
actions = ActionChains(self.dr)
actions.move_to_element(action_element)
actions.perform()
text = self.dr.find_element_by_class_name("over").text
print text
def test_wait(self):
wait_element = self.dr.find_element_by_class_name("wait")
wait_element.click()
waits = WebDriverWait(self.dr, 10)
element = waits.until(lambda s: s.find_element_by_class_name("red"))
#print waits.until(lambda s: s.find_element_by_class_name("red").is_displayed())
if element.is_displayed():
print element.text
else:
print "Failed to display!"
file_path = 'file:///' + os.path.abspath('demo.html')
a = Demo()
a.test_goto(file_path)
#a.test_input("This is python script")
#a.test_link()
#a.test_select()
#a.test_radio()
#a.test_checkbox()
#a.test_button()
#a.test_action_chains()
#a.test_alert()
#a.test_upload("c:\\test.txt")
#a.test_multiple_windows()
#a.test_action()
#a.test_wait()
#a.test_quit()
代码如下:
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.alert import Alert
from selenium.webdriver.support.ui import WebDriverWait
#from selenium.webdriver.support import expected_conditions as EC
#from selenium.webdriver.common.by import By
import os
class Demo(object):
def __init__(self):
self.dr = webdriver.Chrome()
#Goto
def test_goto(self,url):
self.dr.get(url)
#Quit
def test_quit(self):
self.dr.quit()
#Input Text
def test_input(self,value):
input_element = self.dr.find_element_by_id('user')
input_element.send_keys(value)
sleep(2)
input_element.clear()
sleep(2)
input_element.send_keys(value)
#get the attribute value
text = input_element.get_attribute("value");
print text
#Link
def test_link(self):
link_element = self.dr.find_element_by_link_text('baidu')
#get the link address
href = link_element.get_attribute("href")
print href
#get the link value
text = link_element.text
print text
link_element.click()
self.dr.back()
#Single Select
def test_select(self):
select = Select(self.dr.find_element_by_name('select'))
select.select_by_index(1)
sleep(2)
select.select_by_visible_text("Audi")
sleep(2)
select.select_by_value('opel')
# 选择下拉菜单中的最后一项
dr.find_element_by_tag_name('select').find_elements_by_tag_name('option')[-1].click()
#RadioBox
def test_radio(self):
radioboxes = self.dr.find_elements_by_name('identity')
for radiobox in radioboxes:
radiobox.click()
sleep(2)
#CheckBox
def test_checkbox(self):
checkboxes = self.dr.find_elements_by_css_selector('input[type=checkbox]')
for checkbox in checkboxes:
checkbox.click()
sleep(2)
self.dr.find_elements_by_css_selector('input[type=checkbox]').pop().click()
# local single Radiobox and CheckBox
#dr.find_element_by_xpath("//tr[4]/td[2]/div/input[3]").click()
#dr.find_element_by_xpath("//input[@type='checkbox'][@name='checkbox1']").click()
# button
def test_button(self):
button_element = self.dr.find_element_by_class_name("button")
button_element.click
button = button_element.is_enabled()
print button
#ActionChains
def test_action_chains(self):
"""
eg
menu = driver.find_element_by_css_selector(".nav")
hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")
actions = ActionChains(driver)
actions.move_to_element(menu)
actions.click(hidden_submenu)
actions.perform()
"""
alert_element = self.dr.find_element_by_class_name("alert")
actions = ActionChains(self.dr)
actions.click(alert_element)
actions.perform()
sleep(2)
#popped up Alert
def test_alert(self):
alerts = Alert(self.dr)
print alerts.text
alerts.accept()
#alerts.dismiss()
#upload
def test_upload(self, filepath):
#JavascriptExecutor j= (JavascriptExecutor)driver;
#j.executeScript("document.findElementById('load').style.display='block'; ");
upload_element = self.dr.find_element_by_id("load")
upload_element.send_keys(filepath)
def test_multiple_windows(self):
element = self.dr.find_element_by_class_name('open')
element.click()
def test_action(self):
action_element= self.dr.find_element_by_class_name("over")
actions = ActionChains(self.dr)
actions.move_to_element(action_element)
actions.perform()
text = self.dr.find_element_by_class_name("over").text
print text
def test_wait(self):
wait_element = self.dr.find_element_by_class_name("wait")
wait_element.click()
waits = WebDriverWait(self.dr, 10)
element = waits.until(lambda s: s.find_element_by_class_name("red"))
#print waits.until(lambda s: s.find_element_by_class_name("red").is_displayed())
if element.is_displayed():
print element.text
else:
print "Failed to display!"
file_path = 'file:///' + os.path.abspath('demo.html')
a = Demo()
a.test_goto(file_path)
#a.test_input("This is python script")
#a.test_link()
#a.test_select()
#a.test_radio()
#a.test_checkbox()
#a.test_button()
#a.test_action_chains()
#a.test_alert()
#a.test_upload("c:\\test.txt")
#a.test_multiple_windows()
#a.test_action()
#a.test_wait()
#a.test_quit()
相关文章推荐
- Selenium_WebDriver下拉框练习_Java
- ava selenium webdriver实战 helloWord
- Selenium(webdriver)实战
- [转]java selenium webdriver实战 应用小结
- 记一次selenium+webdriver实战中发现的问题
- java selenium webdriver实战 seleniumIDE
- Selenium2学习-007-WebUI自动化实战实例-005-解决 Firefox 版本不兼容:org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary
- java selenium webdriver实战 应用小结
- selenium webdriver XPath的定位方法练习 !
- Selenium_WebDriver登录模拟鼠标移动切换窗体等操作练习(cssSelector初练手)_Java
- selenium webdriver 表格的定位方法练习
- java selenium webdriver实战 页面元素定位
- [转]java selenium webdriver实战 应用小结
- Selenium_WebDriver登录模拟鼠标移动切换窗口等操作练习(cssSelector初练手)_Java
- Selenium实战:.Net下的自动化测试搭建(WebDriver)
- selenium-webdriver——如何在启动firefox时加载扩展
- webdriver selenium xpath
- selenium webdriver常用操作方法
- selenium webdriver test
- selenium-webdriver——如何在启动firefox时加载扩展