当HTML页面中包含iframe标签时,即页面中嵌套其他页面时,要定位元素需要先切换到iframe或frame中才能定位其中的元素
这里用到的函数是driver.switch_to.frame(‘test1’)后面的括号中传参是iframe的name或者ID
#此处的test1表示frame的name或者ID
driver.switch_to.frame('test1')
当你要切换到上一层框架时
driver.switch_to.parent_frame()
要切换到最外层的框架时
driver.switch_to.default_content()
当浏览器打开多个页签,需要切换页签时switch_to.window()
driver.current_window_handle当前页面的描述符
driver.window_handles所有页面的描述符
当你要切换的页面时打开的第二个页面时,可以用下面的方式切换
all_windows = driver.window_handles
driver.switch_to.window(all_windows[1])
selenium中鼠标操作
from selenium.webdriver.common.action_chains import ActionChains
#这里el是要悬停的元素,perform()代表执行,move_to_element()表示移动到元素上,括号中传定位到的元素
ActionChains(driver).move_to_element(el).perform()
click_and_hold(el)#模仿鼠标左键按住不放
release()#放开鼠标,括号中可不传参
context_click(el)#右击元素
drag_and_drop_by_offset(el, -300, 300)#拖动元素,后面的两个数字代表拖动到的位置
下面是一些零碎的东西
get_attribute() 获取html元素的属性
# html标签
print "tag_name:", el.tag_name
# html元素的文本内容
print "text:", el.text
select定位下拉列表
import unittest
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.select import Select
from time import sleep
class Tests(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
# self.driver = webdriver.Firefox()
self.driver.implicitly_wait(10)
self.driver.maximize_window()
url = 'file:///E:/share/20181106/html/form_css_selector.html'
self.driver.get(url)
def tearDown(self):
sleep(2)
self.driver.quit()
def test1(self):
driver = self.driver
sleep(1)
sel = driver.find_element_by_css_selector("select[name='city']")
# 下拉列表
# 直接点击
# sel.find_element_by_css_selector("option[value='a4']").click()
# 使用Select类
# 根据选项的value选择
# Select(sel).select_by_value("a4")
# 根据选项的索引(从0开始)选择
# Select(sel).select_by_index(3)
# 根据选项的文本选择
Select(sel).select_by_visible_text('重庆')
键盘操作 key
from selenium.webdriver.common.keys import Keys
el.send_keys(Keys.CONTROL + "a") ctrl+a
el.send_keys(Keys.CONTROL + "x") ctrl+x
el.send_keys(Keys.CONTROL + "v") ctrl+v