switch_to_alert() 用于获取网页上的警告信息。
text 返回 alert/confirm/prompt 中的文字信息。
accept 点击确认按钮。
dismiss 点击取消按钮,如果有的话。
send_keys 输入值,这个alert\confirm没有对话框就不能用了,不然会报错。
driver = driver driver.find_element_by_name("username").clear()
driver.find_element_by_name("username").send_keys("")
driver.find_element_by_name("password").clear()
driver.find_element_by_name("password").send_keys("")
time.sleep(2)
driver.find_element_by_name("Submit").click()
try:
alertstr = driver.switch_to_alert()
alertTF = True
except:
alertTF = False
if alertTF:
print alertstr.text
alertstr.accept()
下拉框也是 web页面上非常常见的功能,webdriver 对于一般的下拉框处理起来也相当简单,要想定位下拉框中的内容,首先需要定位到下拉框 使用教务系统中的添加课程窗口中的下拉框选择进行举例,使用不同方式进行实现。
下拉框处理: 二次定位:
driver.find_element_by_xx('xx').find_element_by_xx('xx').click()
……
#先定位到下拉框 m=driver.find_element_by_id("ShippingMethod")
#再点击下拉框下的选项
m.find_element_by_xpath("//option[@value='10.69']").click()
……
文件上传:
driver.find_element_by_xx('xx').send_keys('d:/abc.txt')
#定位上传按钮,添加本地文件
driver.find_element_by_name("file").send_keys('D:\\selenium_use_case\upload_file.txt')
文件下载:
确定Content-Type : 下载文件的类型
方法一: curl -I URL | grep "Content-Type"
方法二:
import requests
print requests.head(’http://www.python.org’).headers[’content-type’]
文件下载:
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir", os.getcwd())
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream")
browser = webdriver.Firefox(firefox_profile=fp)
browser.get("http://pypi.python.org/pypi/selenium")
browser.find_element_by_partial_link_text("selenium-2").click()
调用javaScript:
execute_script()
调用js方法
隐藏文字信息
driver.execute_script('$("#tooltip").fadeOut();')
隐藏按钮:
button = driver.find_element_by_class_name('btn')
driver.execute_script('$(arguments[0]).fadeOut()',button)
控制浏览器滚动条:
将页面滚动条拖到底部
js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
将滚动条移动到页面的顶部
js_="var q=document.documentElement.scrollTop=0"
driver.execute_script(js_)
cookie处理:
get_cookies() 获得所有cookie信息
get_cookie(name) 返回特定name 有cookie信息
add_cookie(cookie_dict) 添加cookie,必须有name 和value 值
delete_cookie(name) 删除特定(部分)的cookie信息
delete_all_cookies() 删除所有cookie信息
driver = webdriver.Firefox()
driver.get("http://www.youdao.com")
#向 cookie 的 name 和 value 添加会话信息。
driver.add_cookie({'name':'key-aaaaaaa', 'value':'value-bbbb'})
遍历 cookies 中的 name 和 value信息打印,当然还有上面添加的信息
for cookie in driver.get_cookies():
print "%s -> %s" % (cookie['name'], cookie['value'])
Python WebDriver API-获取对象属性
获取测试对象的属性能够帮我们更好的进行对象的定位。比如页面上有很多标签为 input 元素,而我们需要定位其中 1 个有具有 data-node 属性不一样的元素。由于 webdriver 是不支持直接使用 data-node 来定位对象的,所以我们只能先把所有标签为 input都找到,然后遍历这些 input,获取想要的元素。
通过 find_elements 获得一组元素,通过循环遍历找到想要的元素:
选择页面上所有的 tag name 为 input 的元素
inputs = driver.find_elements_by_tag_name('input')
然后循环遍历出 data-node 为594434493的元素,单击勾选
for input in inputs:
if input.get_attribute('data-node') == '594434493':
input.click()