实例1:多浏览器测试(打开浏览器+打开网页+定位输入点击)
from selenium import webdriver
import time
#启动浏览器
# dr=webdriver.Firefox()
dr=webdriver.Chrome()
# dr=webdriver.Edge()
#打开百度首页
dr.get("http://www.baidu.com")
time.sleep(2)
#定位到搜索框并输入selenium
dr.find_element_by_id("kw").send_keys("selenium")
time.sleep(2)
#定位到“百度一下”按钮并点击
dr.find_element_by_id("su").click()
time.sleep(2)
#关闭浏览器
dr.quit()
实例2:用户登录实例
from selenium import webdriver
import time
dr=webdriver.Firefox()
#打开网页
dr.get("url")
time.sleep(2)
#定位到用户名输入框,输入admin
dr.find_element_by_id("ls_username").send_keys("admin")
time.sleep(2)
#定位到密码输入框,输入123456
dr.find_element_by_id("ls_password").send_keys("123456")
time.sleep(2)
#定位到登录按钮,点击
# dr.find_element_by_class_name("pn.vm").click() #空格要用.代替
dr.find_element_by_xpath("//*[@id='lsform']/div/div/table/tbody/tr[2]/td[3]/button").click()
time.sleep(2)
#定位到退出,点击
dr.find_element_by_link_text("退出").click()
time.sleep(2)
#关闭浏览器
dr.quit()
实例3:文本的清空及提交
from selenium import webdriver
import time
dr=webdriver.Firefox()
#打开网页
dr.get("url")
time.sleep(2)
#定位到搜贴的文本输入框,输入test
dr.find_element_by_id("scbar_txt").send_keys("test")
time.sleep(2)
#清空内容
dr.find_element_by_id("scbar_txt").clear()
time.sleep(2)
#输入selenium
dr.find_element_by_id("scbar_txt").send_keys("selenium")
time.sleep(2)
#回车提交
dr.find_element_by_id("scbar_txt").submit()
time.sleep(2)
dr.quit()
以上代码可简化为:
```python
from selenium import webdriver
import time
dr=webdriver.Firefox()
#打开论坛首页
dr.get("http://localhost/upload/forum.php")
time.sleep(2)
#获取搜贴的文本输入框这个对象保存到变量e里
e=dr.find_element_by_id("scbar_txt")
# 输入test
e.send_keys("test")
time.sleep(2)
#清空内容
e.clear()
time.sleep(2)
#输入selenium
e.send_keys("selenium")
time.sleep(2)
#回车提交
e.submit()
time.sleep(2)
dr.quit()
实例4:获取页面的标题和源代码
他们都是用于断言页面是否跳转正确
获取页面标题:title属性,它可用于断言是否成功那个打开了某个网站;
获取页面源代码:page_source属性,它可用于断言源代码中是否包含了特定的关键字
from selenium import webdriver
import time
dr=webdriver.Firefox()
#打开论坛首页
url="http://localhost/upload/forum.php"
dr.get(url)
#获取当前页面标题,控制台输出
t=dr.title
print(t)
#获取当前页面源代码,控制台输出
p=dr.page_source
print(p)
time.sleep(2)
dr.quit()
实例5:浏览器的常用操作
from selenium import webdriver
import time
dr=webdriver.Firefox()
#打开论坛首页
url="http://localhost/upload/forum.php"
dr.get(url)
#浏览器最大化
dr.maximize_window()
#点击“立即注册”
dr.find_element_by_link_text("立即注册").click()
time.sleep(2)
#刷新当前页面
dr.refresh()
time.sleep(2)
#往后退一页
dr.back()
time.sleep(2)
#往前进一页
dr.forward()
time.sleep(2)
dr.quit()
实例6:多窗口切换实例
from selenium import webdriver
import time
dr=webdriver.Firefox()
#打开论坛首页
url="http://localhost/upload/forum.php"
dr.get(url)
#浏览器最大化
dr.maximize_window()
#获取当前窗口句柄:首页句柄(句柄:简单来理解,就是用于标识每个窗口的一个标识号)
h=dr.current_window_handle
#在发帖搜索框输入abcd,点击搜索按钮,打开新的窗口
dr.find_element_by_id("scbar_txt").send_keys("abcd")
dr.find_element_by_id("scbar_btn").click()
time.sleep(2)
#获取所有的窗口句柄并进行遍历,如果获取的句柄不是首页句柄,则切换到新的窗口
for i in dr.window_handles:
if i!=h:
dr.switch_to.window(i)
#打印窗口标题,以此判断是否切换到了新的窗口
print(dr.title)
time.sleep(2)
dr.find_element_by_id("scform_srchtxt").clear()
dr.find_element_by_id("scform_srchtxt").send_keys("a new window")
time.sleep(2)
#切换到老窗口(首页窗口),并输入内容
dr.switch_to.window(h)
dr.find_element_by_id("scbar_txt").clear()
dr.find_element_by_id("scbar_txt").send_keys("an old window")
time.sleep(2)
#打印当前窗口标题,看是否切换到了老窗口
print(dr.title)
dr.quit()
注解:
(多窗口切换常用的API有哪些?)
dr.current_window_handle:用于获取当前窗口的句柄
dr.window_handles:用于返回所有的窗口句柄到当前会话
dr.switch_to.window(i):用于切换到相应的窗口,用于不同窗口的切换
扩展:我们窗口句柄有编号:
from selenium import webdriver
import time
dr=webdriver.Firefox()
#打开论坛首页
url="http://localhost/upload/forum.php"
dr.get(url)
#浏览器最大化
dr.maximize_window()
#获取当前窗口句柄:首页句柄(句柄:简单来理解,就是用于标识每个窗口的一个标识号)
h=dr.current_window_handle
#在发帖搜索框输入abcd,点击搜索按钮,打开新的窗口
dr.find_element_by_id("scbar_txt").send_keys("abcd")
dr.find_element_by_id("scbar_btn").click()
time.sleep(2)
#切换到新的窗口
dr.switch_to.window(dr.window_handles[1])
#打印窗口标题,以此判断是否切换到了新的窗口
print(dr.title)
time.sleep(2)
dr.find_element_by_id("scform_srchtxt").clear()
dr.find_element_by_id("scform_srchtxt").send_keys("a new window")
time.sleep(2)
#切换到老窗口(首页窗口),并输入内容
dr.switch_to.window(dr.window_handles[0])
dr.find_element_by_id("scbar_txt").clear()
dr.find_element_by_id("scbar_txt").send_keys("an old window")
time.sleep(2)
#打印当前窗口标题,看是否切换到了老窗口
print(dr.title)
dr.quit()
补充:隐式等待:
dr.implicitly_wait(10):
指的是通过一定时长等待页面元素加载完成。这里设置的是10秒,如果超出了设置的时长元素还没有加载,则抛出NoSuchElementException异常。这里的10秒并不是一个固定的等待时间,它并不会影响脚本的执行速度,这是因为当脚本执行到某个元素定位时,如果元素可以定位到,它就继续执行,定位不到,才会等待且最多等10秒。
版权声明:本文为weixin_47468911原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。