1、三大切换主要包括窗口切换、frame切换、以及alert切换
---窗口切换
"""窗口切换"""
from selenium import webdriver
#初始化浏览器对象
driver=webdriver.Chrome()
#访问百度
driver.get("https://www.baidu.com")
#定位新闻,并跳转到新闻页面
news_ele=driver.find_element_by_xpath("//*[text()='新闻']")
news_ele.click()
#获取窗口句柄
windows=driver.window_handles
#切换到最新的窗口,即新闻页面
driver.switch_to.window(windows[-1])
#定位切换后的窗口的热搜新闻词
ele=driver.find_element_by_xpath("//*[text()='热搜新闻词']")
---frame切换
"""frame切换"""
from selenium import webdriver
#初始化浏览器对象
driver=webdriver.Chrome()
#访问本地创建的具备frame的网页
driver.get("http://localhost:63342/python29/web/class01_selenium/demo_%E4%B8%89%E5%A4%A7%E5%88%87%E6%8D%A2/demo_%E7%BD%91%E9%A1%B5.html?_ijt=klj0j81pga0vp0a7ub611lj45i")
#定位frame
frame_ele=driver.find_element_by_xpath("//iframe")
#切换到iframe
driver.switch_to.frame(frame_ele)
#定位frame里的输入框
input_ele=driver.find_element_by_id("kw")
#输入框输入hello
input_ele.send_keys("hello")
---alert切换
"""alert切换"""
from selenium import webdriver
import time
#初始化浏览器对象
driver=webdriver.Chrome()
#访问本地创建的具备alert的网页
driver.get("http://localhost:63342/python29/web/class01_selenium/demo_%E4%B8%89%E5%A4%A7%E5%88%87%E6%8D%A2/demo_%E7%BD%91%E9%A1%B5.html?_ijt=fl57e05f4ib5br0bp069b508qg")
#定位弹出alert的元素
alert_ele=driver.find_element_by_xpath("//*[text()='测试alert弹框']")
alert_ele.click()
#切换到alert
my_alert=driver.switch_to.alert
time.sleep(2)
#弹框点击确认
my_alert.accept()
2、页面操作
--鼠标操作
"""鼠标操作"""
from selenium import webdriver
from selenium.webdriver import ActionChains
driver=webdriver.Chrome()
#访问百度
driver.get("https://www.baidu.com")
#最大化窗口
driver.maximize_window()
#定位百度页面的设置
settings_ele=driver.find_element_by_xpath("//*[@id='s-usersetting-top']")
#初始化ActionChains对象,记得导入ActionChains
action=ActionChains(driver)
#鼠标悬停在设置界面,记得加perform()
action.move_to_element(settings_ele).perform()
#定位高级搜索
adv_ele=driver.find_element_by_xpath("//*[text()='高级搜索']")
adv_ele.click()
---键盘操作
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver=webdriver.Chrome()
driver.get("https://www.baidu.com")
input_ele=driver.find_element_by_xpath("//*[@id='kw']")
#输入数据和enter键
input_ele.send_keys("淘宝",Keys.ENTER)
# input_ele.send_keys(Keys.ENTER)
---select操作
from selenium import webdriver
from selenium.webdriver.support.select import Select
driver=webdriver.Chrome()
driver.get("http://localhost:63342/python29/web/class01_selenium/demo_%E9%A1%B5%E9%9D%A2%E6%93%8D%E4%BD%9C/demo_%E7%BD%91%E9%A1%B5.html?_ijt=th91dtotbkopdcmuqfut86keck")
#定位到select
select_e=driver.find_element_by_xpath("//select")
#初始化Select对象
e=Select(select_e)
#通过value选择
# e.select_by_value("yangzi")
#通过文本选择
e.select_by_visible_text("李沁")
3、本地创建的html代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试网页</title>
<h1>测试selenum</h1>
</head>
<body>
<p>测试selector</p>
<p>请选择你最喜欢的明星
<select>
<option value="zhangyixing">张艺兴</option>
<option value="xiaozhan">肖战</option>
<option value="yangzi">杨紫</option>
<option value="liqin">李沁</option>
</select>
</p>
<p>测试iframe</p>
<p>
<iframe src="https://www.baidu.com"></iframe>
</p>
<p>test</p>
<p onclick="alert('hello,world!')">测试alert弹框</p>
</body>
</html>
4、总结:
元素无法找到的原因(提示NoSuchElement):
--先去检查元素定位方式是否正确,可以在网页按f12使用查找的方式,输入写的定位方法,看能否搜索到想要定位的元素
--是否有设置等待
--检查有没有在页面。有没有在窗口,有没有在一个iframe中