• selenium多表单操作与多窗口,以及警告框处理


    知识是需要经常温习的,不然是很容易遗忘的。

    以前自己操作IFRAME,多窗口的时候,觉得很简单。半年没有操作自动化了,知识又还了回去。

    写博客有一个好处,可以把自己记住的知识点记录下来,这样,以后自己来翻看的时候,可以很快的找到思路。

    毕竟自己不是大神,所以还是多记录一下。

    一,多表单切换:

    例子:

    driver.switch_to.iframe(""if"")

    driver.find_element_by_css_selector("[name=kw].").click()

    switch_to.frame()默认可以直接取表单的ID,name属性。如果iframe没有可用的id,name属性,则可以通过下面的方式进行的定位。

    xf=driver.find_element_by_css_selector(".class")   #先通过CSS定位到iframe

    driver.switch_to.frame(xf)                            ##再将定位对象传给switch_to.frame()方法。

    driver.find_element_by_css_selector(".class")                              ###再来操作元素。

    driver.switch_to.parent_frame()                                              ###完成了再当前表单上的操作,则跳出当前一级表单。

    多窗口操作:

    from selenium import webdriver
    driver=webdriver.Chrome()
    driver.maximize_window()
    driver.implicitly_wait(10)
    import time
    driver.get("https://www.baidu.com/")

    #获取当前页面句柄
    current_handle=driver.current_window_handle
    driver.find_element_by_css_selector("div#u1>a:nth-child(7)").click()
    driver.find_element_by_link_text(u"立即注册").click()
    time.sleep(1)

    #获得当前所有打开窗口的句柄
    all_handles=driver.window_handles

    #进入注册页面窗口
    for handle in all_handles:
    if handle!=current_handle:
    driver.switch_to_window(handle)
    driver.find_element_by_css_selector("[name=userName]").clear()
    driver.find_element_by_css_selector("[name=userName]").send_keys("username")
    driver.find_element_by_css_selector("[name=phone]").clear()
    driver.find_element_by_css_selector("[name=phone]").send_keys(1313313)
    time.sleep(1)

    #回到百度搜索页面
    for handle in all_handles:
    if handle==current_handle:
    driver.switch_to_window(current_handle)
    driver.find_element_by_css_selector("#TANGRAM__PSP_4__closeBtn").click()
    time.sleep(1)
    driver.find_element_by_css_selector("#kw").send_keys("selenium")
    driver.find_element_by_css_selector("#su").click()
    time.sleep(2)

    driver.quit()

    直接上例子,看的更直观些。

     三:警告框操作

    # coding=utf-8
    from selenium import webdriver
    from selenium.webdriver import ActionChains

    driver=webdriver.Chrome()
    driver.maximize_window()
    driver.implicitly_wait(10)
    import time
    driver.get("https://www.baidu.com/")

    #鼠标移到“设置”按钮上
    link=driver.find_element_by_link_text(u"设置")
    ActionChains(driver).move_to_element(link).perform()

    #点击“搜索设置”
    driver.find_element_by_link_text(u"搜索设置").click() #点击搜索设置按钮
    time.sleep(1)
    driver.find_element_by_css_selector("div#gxszButton>a:first-child").click()
    time.sleep(1)

    #跳转到弹出框并点击确定按钮
    driver.switch_to_alert().accept()
    time.sleep(1)

    driver.quit()

    这是百度设置中的一个警告框,当作一个例子。

    四:下拉框操作;
    例子:
    xialakuang=driver.find_element_by_css_selector("div.title>select")
    Select(xialakuang).select_by_visible_text(u"已中奖")



  • 相关阅读:
    leetcode刷题
    剑指offer题解
    哈夫曼树和哈夫曼编码
    HashMap的扩容机制---resize()
    缓存穿透,缓存击穿,缓存雪崩解决方案分析
    字符串的排列组合问题
    乐观锁与悲观锁以及乐观锁的一种实现方式-CAS
    HTTP相关
    零散知识点
    Java大数相加
  • 原文地址:https://www.cnblogs.com/star12111/p/9784399.html
Copyright © 2020-2023  润新知