selenium-多窗口、内嵌框架、键盘

多窗口

        在页面操作中点击链接有时会弹出一个新的浏览器窗口,这就涉及多窗口的切换操作。
current_window_handle 获取当前窗口handle
window_handles 获取所有窗口handle
switch_to.window() 切换窗口

内嵌框架

        Web页面中经常用到Frame/Iframe表单嵌套页面,使用Frame重载页面时不需要重载整个页面,只需要重载页面中的一个框架页(减少了数据的传输,加快了网页下载速度)。
        WebDriver只能在一个页面上对元素识别与定位,如果跨Frame定位元素是无法直接定位的,必须先切换到该元素所在的Frame才能定位。
switch_to.frame()切换到指定Frame
switch_to.parent_frame()切换到上一层frame
switch_to.default_content()跳到最外层frame

键盘

操作键盘使用selenium.webdriver.common.keysimportKeys的Keys类,一般send_keys函数联用
send_keys(Keys.BACK_SPACE)删除键(BackSpace)
send_keys(Keys.SPACE)空格键(Space)
send_keys(Keys.TAB)制表键(Tab)
send_keys(Keys.ESCAPE)回退键(Esc)
send_keys(Keys.ENTER)回车键(Enter)
send_keys(Keys.CONTROL,'a')全选(Ctrl+A)
send_keys(Keys.CONTROL,'c')复制(Ctrl+C)
send_keys(Keys.CONTROL,'x')剪切(Ctrl+X)
send_keys(Keys.CONTROL,'v')粘贴(Ctrl+V)

实战


# •访问12306官网:https://kyfw.12306.cn/otn/leftTicket/init
# •出发地输入南京南,
# •目的地输入杭州东,
# •出发时间选择第二天(是点击出发地下面的第二天的元素,不是选择出发日的日历),
# •打印出所有有二等座的车次编号.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys   # 引用keys包
import time
from selenium.webdriver.common.by import By
driver = webdriver.Firefox()
driver.get('https://kyfw.12306.cn/otn/leftTicket/init')
time.sleep(2)
driver.maximize_window()
time.sleep(2)

# 出发地输入
driver.find_element(By.CSS_SELECTOR, '#fromStationText').click()
driver.find_element(By.CSS_SELECTOR, '#fromStationText').send_keys('nanjingnan\n')
driver.find_element(By.CSS_SELECTOR, '#fromStationText').send_keys(Keys.ENTER)

time.sleep(3)
# 目的地输入
driver.find_element(By.CSS_SELECTOR, '#toStationText').click()
driver.find_element(By.CSS_SELECTOR, '#toStationText').send_keys('hangzhoudong\n')
driver.find_element(By.CSS_SELECTOR, '#toStationText').send_keys(Keys.ENTER)
time.sleep(3)
driver.find_element(By.CSS_SELECTOR, '#date_range>ul>li+li>span').click()
time.sleep(3)
# 查询列表有数据
if driver.find_element(By.CSS_SELECTOR, 'div>table>tbody>tr[id*=ticket]'):
    print('ok')
else:
    print('fail')

你可能感兴趣的:(selenium,测试工具)