zoukankan      html  css  js  c++  java
  • selenium基本语法

    1.Selenium中的WebDriver常用方法:
        title():获取title标签,或者使用title属性
    driver.title()
        get(url):get方式请求url
    driver.get('http://www.baidu.com')
         back():浏览器后退操作
    driver.back()
         forward():浏览器前进操作
    driver.forward()
        save_screenshot(name):保存截图
    driver.save_screenshot('baidu.png')
        add_cookie(dict):添加cookie,传入dict类型
    driver.add_cookie({"":""})
        get_cookies():获取当前页面的cookie
    driver.get_cookies()
        delete_cookie():删除cookie。
    driver.delete_cookie({"":""})
        delete_all_cookies():删除所有的cookie
    driver.delete_all_cookies()
        close():关闭页面
    driver.close()
        quit():关闭浏览器
    driver.quit()
        maximize_window():最大化
    driver.maximize_window()
        minimize_window():最小化
    driver.minimize_window()
    2.WebDriver查找标签的方法
        通过id查找对应的元素
    driver.find_element_by_id("id") # id名称
        通过name查找对应的元素
    driver.find_element_by_name('name') # name属性
        通过标签名查找对应元素
    driver.find_element_by_tag_name('tag') # tag:标签名
        通过xpath来查找对应的元素
    driver.find_element_by_xpath('xpath') # xpath: xpath匹配规则
        通过class属性查找对应的元素
    driver.find_element_by_class_name('classname') # classname:class的属性名称
        通过css选择器查找对应的元素
    driver.find_element_by_css_selector('css') # css选择器
    3.WebDriver的交互
        点击
    driver.find_element_by_id("").click()
        提交
    driver.find_element_by_id("").submit()
        键盘输入
    driver.find_element_by_id("").send_keys("")


    # ctrl+a 全选输入框内容
    driver.find_element_by_id("").send_keys(Keys.CONTROL,'a')

    # ctrl+x 剪切输入框内容
    driver.find_element_by_id("").send_keys(Keys.CONTROL,'x')

    # 输入框重新输入内容
    driver.find_element_by_id("").send_keys("content")

    # 模拟Enter回车键
    driver.find_element_by_id("").send_keys(Keys.RETURN)

    # 清除输入框内容
    driver.find_element_by_id("").clear()
        弹窗
        当你触发了某个事件之后,页面出现了弹窗提示,处理这个提示或者获取提示信息方法如下

    alert = driver.switch_to_alert()
        页面切换
    # 切换到xx页面
    driver.switch_to.window("window_name")


    # 也可以使用window_handles方法来获取每个窗口操作对象

    for handler in driver.window_handlers:
    driver.switch_to_window(handler)
        鼠标动作链
    有些时候,我们需要再页面上模拟一些鼠标操作,比如双击、右击、拖拽甚至按住不动等,我们可以通过导入 ActionChains 类来做到

    #导入 ActionChains 类
    from selenium.webdriver import ActionChains

    # 鼠标移动到 ac 位置
    ac = driver.find_element_by_xpath('element')
    ActionChains(driver).move_to_element(ac).perform()


    # 在 ac 位置单击
    ac = driver.find_element_by_xpath("elementA")
    ActionChains(driver).move_to_element(ac).click(ac).perform()

    # 在 ac 位置双击
    ac = driver.find_element_by_xpath("elementB")
    ActionChains(driver).move_to_element(ac).double_click(ac).perform()

    # 在 ac 位置右击
    ac = driver.find_element_by_xpath("elementC")
    ActionChains(driver).move_to_element(ac).context_click(ac).perform()

    # 在 ac 位置左键单击hold住
    ac = driver.find_element_by_xpath("elementF")
    ActionChains(driver).move_to_element(ac).click_and_hold(ac).perform()

    # 将 ac1 拖拽到 ac2 位置
    ac1 = driver.find_element_by_xpath("elementD")
    ac2 = driver.find_element_by_xpath("elementE")
    ActionChains(driver).drag_and_drop(ac1, ac2).perform()
    4.页面等待
    sleep.sleep()
    from selenium import webdriver
    import time
    driver = webdriver.Firefox()
    driver.get('https://www.baidu.com')
    time.sleep(3)
    WebDriverWait()
    # WebDriverWait 网页等待
    # 值1:等待的对象
    # 值2:等待的时间
    # WebDriverWait经常和until 以及 until not 一起使用
    # lambda 匿名函数 display 显示
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium import webdriver
    driver = webdriver.Firefox()
    driver.get('https://www.baidu.com')
    is_visible = WebDriverWait(driver,10).until(lambda driver : button.is_displayed())

    现在的网页越来越多采用了 Ajax 技术,这样程序便不能确定何时某个元素完全加载出来了。如果实际页面等待时间过长导致某个dom元素还没出来,但是你的代码直接使用了这个WebElement,那么就会抛出NullPointer的异常。

    为了避免这种元素定位困难而且会提高产生 ElementNotVisibleException 的概率。所以 Selenium 提供了两种等待方式,一种是隐式等待,一种是显式等待。

    隐式等待是等待特定的时间,显式等待是指定某一条件直到这个条件成立时继续执行。

    显示等待
        显式等待指定某个条件,然后设置最长等待时间。如果在这个时间还没有找到元素,那么便会抛出异常了。

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    # WebDriverWait 库,负责循环等待
    from selenium.webdriver.support.ui import WebDriverWait
    # expected_conditions 类,负责条件出发
    from selenium.webdriver.support import expected_conditions as EC

    driver = webdriver.Chrome()
    driver.get("http://www.xxxxx.com/loading")
    try:
    # 页面一直循环,直到 id="myDynamicElement" 出现
    element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "myDynamicElement"))
    )
    finally:
    driver.quit()
     如果不写参数,程序默认会 0.5s 调用一次来查看元素是否已经生成,如果本来元素就是存在的,那么会立即返回。

    隐式等待
        隐式等待比较简单,就是简单地设置一个等待时间,单位为秒。

    from selenium import webdriver

    driver = webdriver.Chrome()
    driver.implicitly_wait(10) # seconds
    driver.get("http://www.xxxxx.com/loading")
    myDynamicElement = driver.find_element_by_id("myDynamicElement")
         当然如果不设置,默认等待时间为0。
    ---------------------
    作者:子弹滞销帮帮我们
    来源:CSDN
    原文:https://blog.csdn.net/qq_41949802/article/details/81295904
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    html5实现全屏的api方法
    用html5(requestFullscreen) js实现点击一个按钮使浏览器全屏效果
    HTML5 中fullscreen 中的几个API和fullscreen欺骗
    杭州收集
    JS DOM -- 关于回车键盘事件执行事件
    AngularCSS 的引入: CSS On-Demand for AngularJS
    用Javascript获取页面元素的位置
    angularjs 可以加入html标签方法------ng-bind-html的用法总结(2)
    angularjs 可以加入html标签方法------ng-bind-html的用法总结(1)
    onkeypress、onkeydown、onkeyup
  • 原文地址:https://www.cnblogs.com/bzdmz/p/10299987.html
Copyright © 2011-2022 走看看