zoukankan      html  css  js  c++  java
  • 2

    常用类与方法

    from selenium import webdriver   # 驱动浏览器
    from selenium.webdriver import ActionChains   # 鼠标的相关操作,比如滑动验证
    from selenium.webdriver.common.by import By   # 选择器,以什么方式选择标签元素
    from selenium.webdriver.common.keys import Keys   # 键盘相关
    from selenium.webdriver.support import expected_conditions as EC  # 各种判断,一般跟等待事件连用,比如说等待某个元素加载出来
    from selenium.webdriver.support.wait import WebDriverWait  # 等待事件,可以与EC连用
    
    browser = webdriver.Chrome()
    wait = WebDriverWait(browser, 10)
    browser.get('https://www.baidu.com')
    browser.maximize_window()  # 窗口最大化
    print(browser.current_url)   # 获取当前页URL
    print(browser.title)   # 获取页面的title
    print(browser.name)  # 获取driver对象:chrome
    print(browser.current_window_handle)  # 获取当前窗口
    print(browser.get_cookies())   # 获取cookies
    print(browser.page_source)   # 获取当前页面内容
    browser.refresh()    # 刷新
    browser.save_screenshot('error.png')   # 保存截图
    browser.close()   # 关闭当前窗口
    browser.quit()   # 退出浏览器驱动,关闭所有关联窗口
    

      

    # 测试
    import time
    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get('https://www.baidu.com')
    # driver.find_element()  # 定位标签
    print(driver.title)  # 网页标题
    
    print(driver.page_source)  # 获取页面内容
    driver.set_window_size(800, 400)  # 设置浏览器的宽和高
    print(driver.get_window_size())  # 获取浏览器的宽和高
    
    time.sleep(5)
    driver.close()  # 关闭窗口
    driver.quit()  # 退出浏览器
    

      

      

    选择器

    from selenium import webdriver   # 驱动浏览器
    from selenium.webdriver.support.wait import WebDriverWait  # 等待事件
    browser = webdriver.Chrome()
    wait = WebDriverWait(browser, 10)
    
    browser.get('https://www.baidu.com')
    browser.find_element_by_id('su')  # id选择器
    browser.find_element_by_class_name('xx')  # 类选择器,1个
    browser.find_elements_by_class_name('xx')  # 类选择器,多个
    browser.find_element_by_link_text('xxx')  # 链接文本选择器
    browser.find_element_by_xpath('xxxx')  # xpath选择器
    browser.find_element_by_tag_name('h1')  # 标签选择器,获取1个
    browser.find_elements_by_tag_name('h1')  # 标签选择器,获取多个
    browser.find_element_by_css_selector('xxx')  # 样式选择器
    

      

    在选择器的选用时,要记得获取一个还是多个,要区分开find_elements还是find_element。这个s容易忽略。

    另外,上面的选择器,都可以写成下面的形式:

    from selenium.webdriver.common.by import By  # 选择器,以什么方式选择标签元素
    browser.find_element(by=By.ID, value=None)  # 选择器类型, value值
    

    常用的选择器有:

    By.ID
    By.LINK_TEXT
    By.CLASS_NAME
    By.XPATH
    By.CSS_SELECTOR
    By.TAG_NAME
    

    我们可以通过标签选择器来做:

    import time
    from selenium import webdriver  # 驱动浏览器
    from selenium.webdriver import ActionChains  # 鼠标的相关操作,比如滑动验证
    from selenium.webdriver.common.by import By  # 选择器,以什么方式选择标签元素
    from selenium.webdriver.common.keys import Keys  # 键盘相关
    from selenium.webdriver.support import expected_conditions as EC  # 各种判断,一般跟等待事件连用,比如说等待某个元素加载出来
    from selenium.webdriver.support.wait import WebDriverWait  # 等待事件
    
    browser = webdriver.Chrome()
    wait = WebDriverWait(browser, 10)
    browser.get('https://www.baidu.com')
    
    input = browser.find_element_by_id('kw')  # id选择器
    input.send_keys('在干吗')  # 如果获取到的是个input框,就可以往里面填值
    time.sleep(1)
    input.clear()   # 清空值
    submit = browser.find_element(By.ID, 'su')
    submit.click()  # 点击事件
    # 有的时候,click事件可能会有问题,我们使用键盘事件来处理
    submit.send_keys(Keys.ENTER)
    print(input.get_attribute('name'))  # 获取name属性
    print(input.text)   # 获取内容,但这里的input没有text
    print(input.tag_name)
    print(input.get_property('name'))  # 获取给定属性,用法类似get_attribute
    print(browser.find_element_by_class_name('mnav').text)   # 找个有text的
    

    当获取了标签对象后,我们可以获取这个标签的属性、内容、css样式和子标签(子标签也支持这些操作)

    import time
    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.implicitly_wait(10)
    
    
    try:
        driver.get('https://pythonav.com/login/')
    
        # 根据 class 属性获取 a 标签对象
        a_obj = driver.find_element_by_class_name('navbar-brand')
    
        # 获取 a 标签的href属性
        print(a_obj.get_attribute('href'))
        print(a_obj.text)  # 获取标签的文本内容
        print(a_obj.tag_name)   # 获取标签的名称
        # 获取 css 样式
        print(a_obj.value_of_css_property('padding'))
        print(a_obj.value_of_css_property('font-size'))
        # 如果这个标签有 submit 属性,那么就可以点击它了,比如我们点击form表单中有submit属性的标签
        driver.find_element_by_xpath('//*[@id="fm"]/div[5]/div/input').submit()
    
        # 获取该标签下的子标签,或者子标签元素
        div_obj = driver.find_element_by_class_name('col-xs-3')
        print(div_obj.find_element_by_tag_name('input'))
        print(div_obj.find_element_by_tag_name('input').get_attribute('value'))
    
        # 获取验证码图片的大小
        print(driver.find_element_by_id('image_code').size)
        # # 保存验证码图片
        driver.find_element_by_id('image_code').screenshot('./a.png')
    
    except Exception as e:
        print(e)
    
    finally:
        time.sleep(10)
        driver.quit()
    

    需要注意的是:按钮提交时,除了click之外,还有一个submit,区别是click就是单纯的点一下。而submit是完成了表单提交,需要携带表单信息进行提交的。如果是button按钮的话,只能使用click,而不能使用submit。  

    Keys

    键盘事件有:

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    # print(dir(Keys))
    # print(Keys.__dict__)
    

      

    示例

    import time
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    
    driver = webdriver.Chrome()
    
    driver.get("https://www.baidu.com/")
    
    obj = driver.find_element_by_id("kw")   # 找到输入框
    
    obj.send_keys("流年中渲染了微信")
    
    time.sleep(3)
    obj.send_keys(Keys.ENTER)               # 回车
    time.sleep(4)
    
    driver.quit()
    

      

  • 相关阅读:
    Windows 7的 磁盘管理中,某个磁盘或分区,突然变成只读。
    Python 静态变量 与 静态方法
    如何用手机上网给电信固话充值
    Windows,查看进程的连接的IP地址,批量模式,最后做成Excel
    如果在VMware上免费下载驱动
    DELL iDRAC 远程虚拟机报错:虚拟介质分离或所选虚拟磁盘驱动器的虚拟介质重定向已由另一用户使用
    Windows Server 2008安装 百度Wifi 360Wifi 小米Wifi 失败的解决方法
    让Windows 8 / 8.1 以及 Windows Server 2012 / 2012 R2的桌面,显示我的电脑图标
    让Windows 8 / 8.1 以及 Windows Server 2012 / 2012 R2的任务管理器的性能面板,显示磁盘数据
    企业CIO、CTO必读的34个经典故事
  • 原文地址:https://www.cnblogs.com/a438842265/p/14257423.html
Copyright © 2011-2022 走看看