selenium多窗口切换,frame窗口切换

新窗口切换

使用场景:当点击当前页面按键后新打开了一个窗口,要在新页面上做操作
使用方法:
self.driver.current_window_handle当前handle地址
self.driver.window_handles显示所有的handles地址,handles是一个数组,使用下标选择操作页面的句柄
self.driver.switch_to.window(windowns[1])

 def test_fromele(self):
        self.driver.get('https://www.baidu.com')
        self.driver.find_element_by_id('kw').send_keys('企业微信')
        self.driver.find_element_by_id('su').click()
        self.driver.find_element_by_xpath('//*[@id="1"]/h3/a').click()
        print(self.driver.current_window_handle)
        windowns=self.driver.window_handles
        self.driver.switch_to.window(windowns[1])
        time.sleep(2)
        self.driver.find_element_by_link_text("立即注册").click()

frame窗口切换

frame窗口是html中的一种框架结构
分为:iframe,frameset,frame, iframe和frame需要切换
frame存在嵌套和非嵌套的
self.driver.switch_to.frame(“frame的id或者index”)
self.driver.switch_to.default_content()
self.driver.switch_to.parent_frame()
如果是非嵌套
进入frame,使用 self.driver.switch_to.frame(“frame的id”)没有id,可以使用self.driver.switch_to.frame(0)
返回html页面使用 self.driver.switch_to.default_content()
如果是嵌套:
进入子frame
self.driver.switch_to.frame(“父frame的id”)
self.driver.switch_to.frame(“子frame的id”)
返回html页面
self.driver.switch_to.parent_frame()
self.driver.switch_to.parent_frame()

  def test_frame(self):
        self.driver.get("https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable")
        self.driver.switch_to.frame("iframeResult")
        drag=self.driver.find_element_by_id("draggable")
        drop=self.driver.find_element_by_id("droppable")
        ActionChains(self.driver).drag_and_drop(drag,drop).perform()
        self.driver.switch_to.default_content()
        self.driver.find_element_by_id("submitBTN").click()
 

你可能感兴趣的:(web自动化)