四时宝库

程序员的知识宝库

python web自动化测试 (三大切换)(八)

一、窗口切换

driver.switch_to.window()

进入窗口(窗口的句柄)

window_handles窗口的句柄:指的是子窗口,进入子窗口

当在页面点击新的连接会新增页面,想要切换要使用switch_to.window


driver = webdriver.Edge("F:\python\MicrosoftWebDriver")
url = 'http://www.baidu.com'
driver.get(url)
driver.implicitly_wait(10)
search = driver.find_element_by_id("kw")
search.send_keys('京东')
search.submit()
wait = WebDriverWait(driver,timeout=10,poll_frequency=0.2)
locater = ["xpath",'//div[@class="ec-pc_comp_d20_title"]//a[contains(text(),"京东")]']
em=wait.until(expected_conditions.element_to_be_clickable(locater))
em.click()
# 切换到最新的窗口[-1] -1=索引值
driver.switch_to.window(driver.window_handles[-1])
print(driver.title)
driver.quit()

二、iframe的切换

定义:在一个网页中内嵌另一个网页

iframe的切换方式有三种:

index:根据页面判断通过iframe的索引值进行切换 (自动化测试用的少)

name:根据iframe的name 的值进行切换

web_element:根据iframe的元素进行切换

def switch_to_iframe():
    '''通过name的值进行切换iframe'''
    driver = webdriver.Edge()
    driver.get('https://www.w3school.com.cn/tiy/t.asp?f=html_select')
    # 进入页面的iframe(内嵌页面)
    driver.switch_to.frame('iframeResult') # 通过name的值进行切换
    wait = WebDriverWait(driver,timeout=10,poll_frequency=0.2)
    em=wait.until(expected_conditions.visibility_of_element_located(["xpath","//select"]))
    print(em)
    driver.quit()

def switch_to_iframe2():
    '''通过索引值进行切换iframe'''
    driver = webdriver.Edge()
    driver.get('https://www.w3school.com.cn/tiy/t.asp?f=html_select')
    # 进入页面的iframe(内嵌页面)
    driver.switch_to.frame(1) # 判断iframe的索引值进入,用的少
    wait = WebDriverWait(driver, timeout=10, poll_frequency=0.2)
    em = wait.until(expected_conditions.visibility_of_element_located(["xpath","//select"]))
    print(em)
    driver.quit()

def switch_to_iframe3():
    '''通过web_element的值进行切换iframe'''
    driver = webdriver.Edge()
    driver.get('https://www.w3school.com.cn/tiy/t.asp?f=html_select')
    # 进入页面的iframe(内嵌页面)
    wait = WebDriverWait(driver, timeout=10, poll_frequency=0.2)
    em = wait.until(expected_conditions.visibility_of_element_located(["id", "iframeResult"]))
    driver.switch_to.frame(em)  # 通过web_element的值进行切换
    print(em)
    driver.quit()

iframe的退出

定义:已经进入到iframe要从iframe退出。

driver.switch_to.default_content()  

三、alert弹框切换

driver = webdriver.Edge()
driver.get("file:///f:/selenium_test/alert.html")  # 带有弹框
wait = WebDriverWait(driver,timeout=10,poll_frequency=0.2)
locator = ["xpath","//h2"]
elem=wait.until(expected_conditions.visibility_of_element_located(locator))
elem.click()  # 点击弹框内容
my_alert = driver.switch_to.alert  # 进入alert 注意没有括号
# 取消弹框
my_alert.dismiss()
# 确定弹框
# my_alert.accept()
time.sleep(2)


发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接