Selenium安装与元素定位

对于selenium,以前都是一直学习在用,碰到问题就搜索都没做什么整与总结,
现花点时间整理下,方便以后自己看。


零、安装selenium
  1. pip install selenuim
  2. 下载驱动
  3. 把下载好的驱动解压放到Python安装目录下或添加到环境变量中,就OK了
一、起步
from selenium import webdriver
# 支持多种浏览器,这里以Chrome为例
browser = webdriver.Chrome()
browser.get("http://www.python.org")
# 获取网页title
browser.title
# 获取当前访问网页url
browser.current_url
# 获取网页的源码
browser.page_source
# 获取所有的窗口id,返回一个列表
borwser.window_handles
# 获取当前窗口id
browser.current_window_handle

browser.get('https://www.baidu.com/')
browser.get('https://www.taobao.com/')
# 后退
browser.back()
time.sleep(1)
print(browser.title)
# 前进
browser.forward()
print(browser.title)

# 关闭当前窗口
browser.close()
# 退出驱动,关闭所有关联的窗口
browser.quit()
二、打基础-元素定位

定位https://www.python.org首页的搜索框如下图:
image

代码如下:

# 定位界中的三大金刚:id,css, xpath
# 根据Id定位
input_id = browser.find_element_by_id('id-search-field')
# 根据css定位
input_css = browser.find_element_by_css_selector('#id-search-field')
# 根据xpath定位
input_xpath = browser.find_element_by_xpath('//input[@id="id-search-field"]')
print(input_id,input_css,input_xpath)

browser.close()
  • 如果三大金刚不能满足你的需求, 还可以使用以下的定位方式
# 根据元素的name属性定位
browser.find_element_by_name('q')
# 根据链接文本定位超链接,两个方法自己试哈
browser.find_element_by_link_text('Donate')
browser.find_element_by_partial_link_text('Donate')
# 根据标签名定位, 例如定位上述首页中的大Logo
browser.find_element_by_tag_name('h1')
# 根据元素的class属性定位
browser.find_element_by_class_name('site-headline') # ps: class含有空格的复合类怎么办

# 以上方式的缺点是如果对应的元素不是唯一的,会返回第一个匹配的元素,可能不是你想要的结果
# 如果没有元素匹配,会抛出NoSuchElementException异常
# 元素不是唯一的怎么才能获取所有的, 就是在element后面加多个s,返回结果是List
input_q = browser.find_elements_by_name('q')
# 知道需要的元素在第几个就可以通过操作List的方法提取, 或者用for循环,例如
q = input_q[0]
  • 终极方式find_element,实际上以上的定位方式都是通过它来实现的
from selenium import webdriver
from selenium.webdriver.common.by import By
browser = webdriver.Chrome()
browser.get('https://www.python.org')
# 第一个参数是定位方式,第二个传入具体的参数
input_q= browser.find_element(By.NAME,'q')
print(input_q)
browser.quit()

当然find_element() 方法,不止By.NAME,更多的自己尝试吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值