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()
  • 相关阅读:
    java移位运算符详解[转]
    Android四大基本组件介绍与生命周期
    oracle中怎么得到日期相减除去周末后的天数
    小计_合计_统计
    Oracle--SQL技巧之一(查询连续的记录)
    游戏中地图的制作(一)
    在别的地方看的<<给程序员介绍一些C++开源库>>,记录给大家共同学习
    C语言调用python代码
    XML文件中怎么写小于号 等特殊符号
    system->copy 和 ShellExecute 用法
  • 原文地址:https://www.cnblogs.com/sruzzg/p/13166588.html
Copyright © 2011-2022 走看看