Selenium

selenium介绍:

Selenium快速入门:

from selenium import webdriver
# 实例化浏览器
driver = webdriver.Chrome()
# 发送请求
driver.get('https://www.baidu.com')
# 退出浏览器
driver.quit()

driver定位元素:

  1. 通过id值进行定位    driver.find_element(By.ID,"kw")
  2. 通过class值进行定位   driver.find_element(By.CLASS_NAME,"s_ipt")
  3. 通过name进行定位    driver.find_element(By.NAME,"wd")
  4. 通过tag_name 进行定位   driver.find_elements(By.TAG_NAME,"input")
  5. 通过xpath语句进行定位   driver.find_element(By.XPATH,'//*[@id="kw"]')
  6. 通过css语法进行定位     driver.find_element(By.CSS_SELECTOR,"#kw")
  7. 通过文本进行定位     driver.find_element(By.LINK_TEXT,"新闻")

百度为案例:

第一步:使用selenium打开我们的百度

需要导入的库:from selenium import webdriver from selenium.webdriver.common.by import By

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")

第二步:通过开发者工具找到我们需定位的元素:

例如我们定位“百度一下”:

 

 代码实现

这个是定位这个百度一下的三种定位方式,根据其匹配标签内容我们可以有不同的方式进行匹配。

# 1. 通过 id 定位:
driver.find_element(By.ID,"su")

# 2. 通过 class 定位:   btn self-btn bg s_btn 我们可以发现这里面存在空格分隔,如果你直接全部使用的话,那么模拟器将定位不到内容,因此我们仅需取其中的一部分
driver.find_element(By.CLASS_NAME,"bg s_btn")

# 3. 通过 xpath 定位: //*[@id="su"]
driver.find_element(By.XPATH,'//*[@id="su"]')

driver操作表单元素

操作输入框:

        第一步:找到这个元素。

        第二步:使用send_keys(value),将数据填充进去

使用clear方法可以清除输入框中的内容:

inputTag = driver.find_element_by_id('su')

inputTag.clear()

操作按钮有很多种方式。比如单击、右击、双击等。这里讲一个最常用的。就是点击。直接调用click函数就可以了 

inputTag = driver.find_element_by_id('su')
inputTag.click()

鼠标行为链

有时候在页面中的操作可能要有很多步,那么这时候可以使用鼠标行为链类ActionChains来完成。比如现在要将鼠标移动到某个元素上并执行点击事件。

actions = ActionChains(driver)       # 首先需要创建一个鼠标行为链对象,并将驱动传递进去
actions.move_to_element(inputTag)    # move_to_element:将鼠标移至inputTag的位置
actions.send_keys_to_element(inputTag,'python')  # send_keys_to_element 在定位的元素中输入
actions.move_to_element(submitTag)
actions.context_click()              # 鼠标进行右击
actions.click(submitTag)             # 鼠标在定位元素进行单击
actions.perform()                    # 这个是鼠标执行操作的必要,不然你上面的操作都没法执行

还有更多的鼠标相关的操作

Cookie操作

  • 获取所有的cookie:cookies = driver.get_cookies()

  • 根据cookie的name获取cookie:value = driver.get_cookie(name)

  • 删除某个cookie    driver.delete_cookie('key')

页面等待:

        现在的网页越来越多采用了 Ajax 技术,这样程序便不能确定何时某个元素完全加载出来了。如果实际页面等待时间过长导致某个dom元素还没出来,但是你的代码直接使用了这个WebElement,那么就会抛出NullPointer的异常。为了解决这个问题。所以 Selenium 提供了两种等待方式:一种是隐式等待、一种是显式等待。

  • 隐式等待:调用driver.implicitly_wait。那么在获取不可用的元素之前,会先等待10秒中的时间

driver.implicitly_wait(10) 

  • 显示等待:显示等待是表明某个条件成立后才执行获取元素的操作。也可以在等待的时候指定一个最大的时间,如果超过这个时间那么就抛出一个异常。显示等待应该使用selenium.webdriver.support.excepted_conditions以及 selenium.webdriver.support.ui.WebDriverWait  配合使用

一些其他的等待条件

  • presence_of_element_located:某个元素已经加载完毕了。

  • presence_of_all_elements_located:网页中所有满足条件的元素都加载完毕了。

  • element_to_be_clickable:某个元素是可以点击了。

  • 更多条件请参考:5. Waits — Selenium Python Bindings 2 documentation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值