美文网首页
自动化测试中怎么获取frame页面上的元素

自动化测试中怎么获取frame页面上的元素

作者: 吱吱菌啦啦 | 来源:发表于2022-04-30 14:48 被阅读0次
    垂直frame
    <html>
    <frameset cols="25%,50%,25%">
    <frame src="/example/html/frame_a.html">
    <frame src="/example/html/frame_b.html">
    <frame src="/example/html/frame_c.html">
    </frameset>
    </html>
    
    水平frame
    <html>
    <frameset rows="25%,50%,25%">
    <frame src="/example/html/frame_a.html">
    <frame src="/example/html/frame_b.html">
    <frame src="/example/html/frame_c.html">
    </frameset>
    </html>
    

    frame存在两种:嵌套,非嵌套

    切换frame的方法:

    根据元素id或index切换frame:driver.switch_to.frame()
    切换到默认frame:driver.switch_to.default_content()
    切换到父级frame:driver.switch_to.parent_frame()

    切到frame页:
    1.处理未嵌套的frame:
    driver.switch_to_frame("frame的id")
    driver.switch_to_frame("frame-index")frame无ID时依据索引来处理,索引从0开始driver.switch_to_frame(0)
    2.处理嵌套frame:
    对于嵌套的先进入到iframe的父节点,再进到子节点,然后可以对子节点里面的对象进行处理和操作
    driver.switch_to.frame("父节点")
    driver.switch_to.frame("子节点")

    从frame切回页面

    switch_to.parent_frame()
    switch_to.default_content()

    测试页面:https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable
    以获取frame页面元素为例:

    from time import sleep
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    class TestFrame:
       class TestWindows():
           def setup(self):
               self.driver = webdriver.Chrome()
               # 隐式等待
               self.driver.implicitly_wait(5)
               # 窗口最大化
               self.driver.maximize_window()
               self.driver.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
    
    
           def teardown(self):
               self.driver.quit()
    
           def test_frame(self):
               # 切换到frame,两种方式都可行
               self.driver.switch_to.frame('iframeResult')
               # self.driver.switch_to_frame('iframeResult')
               # 获取frame上的元素
               print(self.driver.find_element(By.XPATH, '//*[@id="draggable"]').text)
               # 从frame切回页面,两种方式
               #self.driver.switch_to.parent_frame()
               self.driver.switch_to.default_content()
               sleep(2)
               # 获取页面上的元素,获取页面上点击运行按钮
               self.driver.find_element(By.XPATH, '//*[@id="submitBTN"]').click()
    

    相关文章

      网友评论

          本文标题:自动化测试中怎么获取frame页面上的元素

          本文链接:https://www.haomeiwen.com/subject/uvmdyrtx.html