Selenium API高级
多标签之间的切换
场景:有的时候点击一个链接,新页面并非由当前页面跳转过去,而是新开一个页面打开这种情况下,计算机需要识别多标签或窗口的情况
(1)获取所有窗口的句柄
(2)过窗口的句柄进入的窗口
driver.switch_to.window(handles[n])
通过窗口句柄激活进入某一窗口
58同城租房信息:http://bj.58.com
多表单切换
在网页中,表单嵌套是很常见的情况,尤其是在登录的场景
(1)什么是多表单?
实际上就是使用iframe/frame,引用了其他页面的链接真正的页面数据并没有出现在当前源码中,但是在浏览器中我们看到简单理解可 使 页面中开了一个窗口显示另一个页面
(2)处理方法
直接使用id值切换进表单
driver.switch_to.frame(value)/driver.switch_to_frame(value)
定位到表单元素,再切换进入
el = driver.find_element_by_xxx(value)
driver.switch_to.frame(el) /driver.switch_to_frame(el)
from selenium import webdriver
import time
driver = webdriver.Firefox()
url = 'https://bj.58.com/'
driver.get(url)
el = driver.find_element_by_link_text('租房')
time.sleep(5)
print('点击前手柄:',driver.window_handles)
print('点击url:',driver.current_url)
el.click()
print('点击后手柄:',driver.window_handles)
print('点击后url:',driver.current_url)
time.sleep(5)
driver.close()
弹出框操作
进入到弹出框中
driver.switch_to.alert
接收警告
accept()
解散警告
dismiss()
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.maximize_window()
url = ‘http://baidu.com/’
driver.get(url)
el = driver.find_element_by_link_text(‘设置’)
time.sleep(2)
el.click()
el_set = driver.find_element_by_css_selector(‘.setpref’)
time.sleep(3)
el_set.click()
el_save = driver.find_element_by_css_selector(‘.prefpanelgo’)
time.sleep(2)
el_save.click()
driver.switch_to.alert.dismiss()
time.sleep(2)
driver.close()
练习使用键盘
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
创建浏览器对象
driver = webdriver.Firefox()
定位到搜索框
time.sleep(2)
el = driver.find_element_by_class_name(‘b_searchbox’)
time.sleep(2)
输入内容
el.send_keys(‘selenium’)
键盘操作
el.send_keys(Keys.CONTROL,‘v’)
#清空操作
time.sleep(2)
el.clear()
#输入操作
time.sleep(2)
el.send_keys(‘seleniumn’)
删除操作
time.sleep(2)
el.send_keys(Keys.BACK_SPACE)
time.sleep(2)
driver.quit()



