• selenium学习之查找元素(二)


    通过selenium的使用可以驱动浏览器来模拟加载网页,简单定位元素和获取对应的数据:
    (1)find_elements_by_id  # 根据id属性值获取元素列表
    (2)find_elements_by_class_name  # 根据类名获取元素列表
    (3)find_elements_by_tag_name  # 根据标签名获取元素列表
    (4)find_elements_by_css_selector  # 根据CSS选择器获取元素列表
    (5)find_elements_by_xpath  # 返回一个包含元素的列表
    (6)find_elements_by_partial_link_text  # 根据标签包含的文本获取元素列表,模糊定位
    注意:若上述方法中的elements去掉 s ,就会返回单个元素

    from selenium import webdriver
    
    if __name__ == '__main__':
        driver = webdriver.Chrome()
        driver.get('https://www.douban.com/')
        
        # 1.通过标签的id值获取单个标签
        task1 = driver.find_element_by_id('anony-nav')    # 返回值为标签对象
        print(task1)
    
        # 2.通过标签的id值获取多个标签
        task2 = driver.find_elements_by_id('anony-nav')    # 返回值为包含多个标签对象的list
        print(task2)
    
        # 3.通过标签的class属性值获取标签
        task3 = driver.find_elements_by_class_name('anony-nav-links')    # 返回值为标签对象的list
        print(task3)
    
        # 4.通过Xpath获取左上角豆瓣图片的<a>标签
        task4 = driver.find_elements_by_xpath('//*[@id="anony-nav"]/h1/a')    # 返回值为标签对象的list
        print(task4)
    
        # 5.通过标签包裹的文本“下载豆瓣 APP”获取元素列表(精确定位)
        task5 =driver.find_element_by_link_text('下载豆瓣 App')    # 返回值为标签对象
        print(task5)
    
        # 6.通过标签包裹的文本“豆瓣”获取元素列表(模糊定位)
        task6 = driver.find_elements_by_partial_link_text('豆瓣')
        print(len(task6))
    
        # 7.通过标签名获取元素列表
        task7 = driver.find_elements_by_tag_name('div')
        print(len(task7))
    
        # 8.获取<h1>标签包裹的文本内容
        task8 = driver.find_element_by_tag_name('h1')
        print(task8.text)
    
        # 9.通过标签包裹的文本“下载豆瓣 App”获取期href属性值
        task9 = driver.find_element_by_link_text('下载豆瓣 App')
        print(task9.get_attribute('href'))
    
        driver.close()
        driver.quit()

    获取标签的通用方法:

    1 from selenium.webdriver.common.by import By
    2 
    3 result = driver.find_element(By.ID, 'q')


  • 相关阅读:
    chrome书签插件
    Js箭头函数和lambda
    CSS水平或垂直居中技巧
    前端需要注意的SEO优化
    OpenCV图像识别初探-50行代码教机器玩2D游戏
    机器学习笔记(十一)----降维
    基于Docker搭建分布式消息队列Kafka
    一个经典面试题:如何保证缓存与数据库的双写一致性?
    Flask 蓝图机制及应用
    软件开发团队如何管理琐碎、突发性任务
  • 原文地址:https://www.cnblogs.com/chang2021/p/13773612.html
Copyright © 2020-2023  润新知