一、用By定位元素
WebDriver提供另一套书写方法,即统一调用find_element()方法,通过By来声明定位的方法,并且传入对应定位方法的定位参数。具体如下:
find_element(By.ID,"kw")
find_element(By.NAME,"wd")
find_element(By.CLASS_NAME,"s_ipt")
find_element(By.TAG_NAME,"input")
find_element(By.LINK_TEXT,"新闻")
find_element(By.PARTIAL_LINK_TEXT,"新")
find_element(By.XPATH,"//*[@class='s_ipt']")
find_element(By.CSS_SELECTOR,"span.s_ipt_wr>input#kw")
find_element()方法只用于定位元素。它需要两个参数,第一个参数是定位的类型,有By提供:第二个参数是定位的具体方式。在使用By之前需要将By类导入。
from selenium.webdriver.common.by import By
二、控制浏览器
1.控制浏览器窗口大小
例如移动端大小为480*800,然后访问移动站点,WebDriver提供了set_window_size()方法来设置浏览器的大小。
from selenium import webdriver
driver=webdriver.Firefox()
driver.get("http://m.mail.10086.cn")
#参数数字为像素点
print("设置浏览器宽480、高800显示")
driver.set_window_size(480,800)
driver.quit()
在PC端执行自动化测试脚本大多的情况下是希望浏览器在全屏幕模式下执行,那么可以使用maximize_window()方法使打开的浏览器全屏显示,其用法与set_window_size相同,但它不需要参数。
from selenium import webdriver
driver=webdriver.Firefox()
driver.get("http://m.mail.10086.cn")
print("设置全屏显示")
driver.maximize_window()
driver.quit()
2、控制浏览器后退、前进
在使用浏览器浏览网页时,浏览器提供了后退和前进按钮,可以方便地浏览过的网页之间的切换,WebDriver也提供了对应的back()和forward()方法来模拟后退和前进按钮。
from selenium import webdriver
driver=webdriver.Firefox()
#访问百度首页
first_url='http://www.baidu.com'
print("now access %s" %(first_url))
driver.get(first_url)
#访问新闻页面
second_url='http://news.baidu.com'
print("now access %s" %(second_url))
driver.get(second_url)
#返回(后退)到百度首页
print("Back to %s" %(first_url))
driver.back()
#前进到新闻页
print("forward to %s" %(second_url))
driver.forward()
输出结果为:
now access http://www.baidu.com
now access http://news.baidu.com
Back to http://www.baidu.com
forward to http://news.baidu.com
3、模拟浏览器刷新
driver.refresh() #刷新当前页面
三、简单元素登陆
认识WebDriver中最常用的几个方法:
- clear():清除文本
-
send_keys(*value):模拟按键输入
- click():单击元素
例子:优快云登陆
from selenium import webdriver
from time import sleep
driver=webdriver.Chrome()
driver.get("https://www.youkuaiyun.com")
driver.find_element_by_class_name("userinfo").click()
driver.find_element_by_link_text("账号登录").click()
driver.find_element_by_id("all").clear()
driver.find_element_by_id("all").se