zoukankan      html  css  js  c++  java
  • 6_2 selenium定位元素的方法

     webdriver 提供了一系列的元素定位方法,常用的有以下几种:

    find_element_by_id()  # 通过元素ID定位
    find_element_by_name()  # 通过元素Name定位
    find_element_by_class_name()  # 通过类名定位
    find_element_by_tag_name()  # 通过元素TagName定位
    find_element_by_link_text()  # 通过文本内容定位
    find_element_by_partial_link_text()
    find_element_by_xpath()  # 通过Xpath语法定位
    find_element_by_css_selector()  # 通过选择器定位

    注意

    1、find_element_by_xxx找的是第一个符合条件的标签,find_elements_by_xxx找的是所有符合条件的标签。

    2、根据ID、CSS选择器和XPath获取,它们返回的结果完全一致。

    3、另外,Selenium还提供了通用方法find_element(),它需要传入两个参数:查找方式By和值。实际上,它就是find_element_by_id()这种方法的通用函数版本,比如find_element_by_id(id)就等价于find_element(By.ID, id),二者得到的结果完全一致。

    举例:

    """selenium定位元素的方法"""
    
    
    from selenium import webdriver
    import time
    
    driver_path = r"D:installchromedriverchromedriver.exe"
    # 创建浏览器对象(句柄)
    driver = webdriver.Chrome(executable_path = driver_path)
    driver.get('https://www.baidu.com/')
    # print(driver.page_source)
    
    # inputTag = driver.find_element_by_id('kw')
    # inputTag = driver.find_element_by_name('wd')
    # inputTag = driver.find_element_by_class_name('s_ipt')
    inputTag = driver.find_element_by_xpath("//input[@id='kw']")
    # inputTag = driver.find_element_by_css_selector(".quickdelete-wrap > input")
    inputTag.send_keys('python')
    1.如果是想要对元素进行一些操作,比如给一个文本框输入值,或者是点击某个按钮,那么就必须使用selenium给我们提供的查找元素的方法。
    2.如果只是想要解析网页中的数据,推荐将网页源代码扔给lxml来解析。因为lxml底层使用的是C语言,所以解析效率更高
    通过page_source属性可以获取网页的源代码,接着就可以使用解析库(如正则表达式、Beautiful Soup、pyquery等)来提取信息了。
    from selenium import webdriver
    import time
    
    driver_path = r"D:installchromedriverchromedriver.exe"
    # 创建浏览器对象(句柄)
    driver = webdriver.Chrome(executable_path = driver_path)
    driver.get('https://www.baidu.com/')
    # print(driver.page_source)
    # 获取网页源码
    page_text = driver.page_source
    with open("jd.html", "w", encoding="utf-8") as fp:
        fp.write(page_text)
    
    time.sleep(2)
    # 关闭浏览器
    driver.quit()
  • 相关阅读:
    程序员是怎样阅读简历的转
    在res/values下创建attrs.xml
    java clone技术 浅谈 转
    map list...
    Tab与TabHost转
    Silverlight以及Mvc最佳文件下载解决方案(附源码)
    如何将List<T>转换相应的Html(xsl动态转换)(二)
    UML 类图
    xxxxxx
    Xml日志记录文件最优方案(附源代码)
  • 原文地址:https://www.cnblogs.com/sruzzg/p/13166588.html
Copyright © 2011-2022 走看看