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

2022-04-30  本文已影响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()
上一篇下一篇

猜你喜欢

热点阅读