一、窗口切换
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)