python selenium automatically realizes frame switching and operates alert popups

Frame switching method 1

import unittest
from selenium import webdriver
import time
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException

driver = webdriver.Ie()
url = 'http://127.0.0.1/frameset.html'
driver.get(url)
time.sleep(2)

driver.switch_to.frame(0)  # 切换到编号为0的frame
leftFrameText=driver.find_element_by_xpath('//p')  # 定位p标签
assert leftFrameText.text=='这是左侧 frame 页面上的文字'  # 断言p标签的文本
driver.find_element_by_tag_name('input').click()  # 通过标签名定位元素,并点击
try:
    alertWindow=WebDriverWait(driver,10).until(EC.alert_is_present())  # 等待弹框出现
    alertWindow.accept()  # 接受弹框
except TimeoutException as e:
    print(e)

driver.switch_to.default_content()  # 从frame(0)中切换出来,回到主页面
driver.switch_to.frame(driver.find_elements_by_tag_name('frame')[1])  # 通过下标定位frame2,再切换到frame2
assert '这是中间 frame 页面上的文字' in driver.page_source  # 断言网页源码包含指定文字
driver.find_element_by_tag_name('input').send_keys('你好')  # 定位input元素,并输入'你好'
driver.switch_to.default_content()  # 切回主页面

driver.switch_to.frame(driver.find_element_by_id('rightframe'))  # 通过id定位frame3,然后切换到frame3
assert  '这是右侧 frame 页面上的文字' in driver.page_source  # 断言网页源码包含指定文字
driver.switch_to.default_content()  # 切回主页面

driver.quit()  # 关闭浏览器

Frame switching method 2

import unittest
from selenium import webdriver
import time
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException

driver = webdriver.Ie()
url = 'http://127.0.0.1/frameset.html'
driver.get(url)
time.sleep(2)

framesList=driver.find_elements_by_tag_name('frame')  # 获取页面所有的frame
for frame in framesList:  # 遍历所有frame
    driver.switch_to.frame(frame)  # 切换frame
    if '这是中间 frame 页面上的文字' in driver.page_source:  # 判断该frame是否是要操作的frame
        driver.find_element_by_tag_name('input').send_keys('你好')  # 定位input元素,并输入'你好'
    driver.switch_to.default_content()  # 切回主页面

driver.quit()  # 关闭浏览器

alert popup operation

import unittest
from selenium import webdriver
import time
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException, NoAlertPresentException

driver = webdriver.Ie()
url = 'http://127.0.0.1/test_alert.html'
driver.get(url)
time.sleep(2)

button=driver.find_element_by_id('button')  # 定位按钮
button.click()  # 点击按钮,弹出alert框
try:
    alert=driver.switch_to_alert()  # 切换到alert弹框
    alert.text  # 获取弹框提示文字
    #alert.send_keys('你好')  # 如果弹框中需要输入内容,可用此方法
    alert.accept()  # 点击确定
    #alert.dismiss() #  点击取消
except NoAlertPresentException as e:
    print(e)
driver.quit()  # 关闭浏览器

Guess you like

Origin blog.csdn.net/weixin_44123630/article/details/113831349