python笔记 之selenium基础用法

在上篇笔记中已经写下如何安装selenium以及配置浏览器驱动,传送门<selenium 安装>,下面会介绍selenium的基础用法。

以百度链接为例,由于selenium加载受到网速的影响,所以网速差运行可能会较慢或者出错

from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')

1、查找元素的方法


selenium提供了查找元素的方法 find_element_by_XXX 和find_elements_by_XXX,注意这两种的区别,一个后面有s,一个没有s。这个问题很容易就出错。

find_element_by_XXX 表示查找第一个符合条件的元素

# driver.find_element_by_class_name() 根据标签中的class属性进行查找
# driver.find_element_by_id() 根据标签中的id属性进行查找
# driver.find_element_by_name()  根据标签中的name属性进行查找
# driver.find_element_by_tag_name() 根据标签名进行查找
# driver.find_element_by_css_selector()  根据css选择器进行查找
# driver.find_element_by_xpath()  根据xpath语法进行查找
# driver.find_element_by_link_text()  根据链接中的文本内容进行查找
# driver.find_element_by_partial_link_text()  根据链接中的部分文本内容进行查找

find_elements_by_XXX表示查找所有符合条件的元素,然后返回一个列表,用法同上

获取文本框的id属性值,在网页中定位到文本框的位置,清空文本框中的值,然后在输入selenium,如下所示:

driver.find_element_by_id('kw').clear() #clear() 表示清空当前文本框的值
driver.find_element_by_id('kw').send_keys('selenium') #send_keys()表示在文本框中输入内容

定位到该按钮的位置,然后模拟点击

driver.find_element_by_id('su').click()  #click() 表示点击一次

简单的模拟浏览器就完成啦,接下来学习各个查找元素方法的使用

以获取百度首页中的新闻为例,各种方法的使用如下,如果想使用哪种需要解注释,然后将其它注释掉即可

import time
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')
driver.implicitly_wait(10)  #隐式等待十秒 

driver.find_element_by_class_name('mnav').click()
# driver.find_element_by_name("tj_trnews").click()
# driver.find_element_by_css_selector('#u1 a').click()
# driver.find_element_by_xpath('//div[@id="u1"]/a').click()
# driver.find_element_by_link_text('新闻').click()
# driver.find_element_by_partial_link_text('新').click()
time.sleep(5)
driver.close() #关闭窗口
time.sleep(3)
driver.quit()  #关闭浏览器

2、获取属性值与文本内容

from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://www.baidu.com')
driver.implicitly_wait(10)  #隐式等待十秒

content = driver.find_element_by_xpath('//div[@id="u1"]/a').text #获取文本text的值 
print(content)
name_attr = driver.find_element_by_xpath('//div[@id="u1"]/a').get_attribute('name') #获取name属性值
print(name_attr)
class_attr = driver.find_element_by_xpath('//div[@id="u1"]/a').get_attribute('class')  #获取class属性值
print(class_attr)
href_attr = driver.find_element_by_xpath('//div[@id="u1"]/a').get_attribute('href')  #获取href属性值
print(href_attr)

#输出结果为:
# 新闻
# tj_trnews
# mnav
# http://news.baidu.com/

3、window切换

主要练习对窗口的切换,代码中有注释

from selenium import webdriver
driver = webdriver.Chrome()  #个人火狐浏览器加载不出来,所以使用谷歌
driver.get("http://www.baidu.com")

# 获取当前的window对象
current_win = driver.current_window_handle
# current_win 当前网页的编号 driver.title 网页标题
print(current_win,driver.title)
driver.implicitly_wait(10)
# 点击首页新闻链接
driver.find_element_by_link_text('新闻').click()
driver.implicitly_wait(10)
# 找到第一篇文章,然后点击查看
driver.find_element_by_css_selector('li.hdline0 a').click()
driver.implicitly_wait(10)

# 此时浏览器会有两个窗口

# 获取所有的窗口
all_windows = driver.window_handles
# 判断
for window in all_windows:
    if window != current_win:
        # 切换到第二个窗口
        driver.switch_to.window(window)
# 获取新闻标题 并输出,验证是否切换成功
title = driver.find_element_by_css_selector('.text_title h1').text
print(title)
# 关闭当前窗口,即关闭新闻详细页面的窗口
driver.close()
# 切换到新闻首页窗口
driver.switch_to.window(current_win)
# 输出一条信息,验证是否切换成功
print(driver.find_element_by_css_selector('#footer span').text)
# 关闭浏览器
driver.quit()

学习到这里只是selenium的冰山一角,更多功能还会继续学习

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值