frame标签有frameset、frame、iframe三种,frameset和其它普通标签没有区别,不会影响正常定位,而frame与iframe对selenium定位而言是一样的。
Selenium有以下方法对frame进行操作。
示例网站:http://sahitest.com/demo/framesTest.htm
示例脚本:
- from selenium import webdriver
- from time import sleep
-
- class TestFrame(object):
- def setup(self):
- self.driver = webdriver.Chrome()
- self.driver.get("http://sahitest.com/demo/framesTest.htm")
- def test_frame(self):
- top = self.driver.find_element_by_name("top")
- # 切换到上面的frame
- self.driver.switch_to.frame(top)
- #点击上面frame中的Link Test链接,打开新页面
- self.driver.find_element_by_xpath("/html/body/table/tbody/tr/td[1]/a[1]").click()
- #切换到主页面
- self.driver.switch_to.default_content()
- sleep(3)
- # 切换到下面的frame
- second = self.driver.find_element_by_xpath("/html/frameset/frame[2]")
- self.driver.switch_to.frame(second)
- # 点击下面frame中的Form Test链接,打开新页面
- self.driver.find_element_by_xpath("/html/body/table/tbody/tr/td[1]/a[2]").click()
- sleep(2)
- self.driver.quit()
-
- if __name__ == '__main__':
- frame = TestFrame()
- frame.test_frame()