前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Selenium简单基础详解(II)

Selenium简单基础详解(II)

作者头像
吉师散养基地
发布2022-11-21 15:33:25
3770
发布2022-11-21 15:33:25
举报
文章被收录于专栏:我奏是太阳

​ ​前言

活动地址:CSDN21天学习挑战赛

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需写作干货注入能量… 热爱写作,愿意让自己成为更好的人…

承接上文,继续列举Selenium的基操

四、元素操作

1、获取文本

代码语言:javascript
复制
ret = browser.find_element_by_class_name('element')
print(ret[0].text)

2、获取属性值

代码语言:javascript
复制
ret = browser.find_element_by_tag_name('a')
print(ret[0].get_attribute('href'))

五、前进后退

代码语言:javascript
复制
# 前进
browser.forward()

# 后退 
browser.back()

六、执行js

代码语言:javascript
复制
from selenium import webdriver

browser = webdriver.Chrome()
url = 'https://www.baidu.com/'
browser.get(url)

js = 'window.scrol1To(O,document.body.scrollHeight)'  # js语句
browser.execute_script(js) # 执行js的方法

browser.quit()

七、页面等待

现在的网页大部分采用了Ajax技术

AJAX即“Asynchronous JavaScript and XML”(非同步的JavaScriptXML技术),指的是一套综合了多项技术的浏览器网页开发技术。Ajax的概念由杰西·詹姆士·贾瑞特所提出[1]。)来自维基百科

 非同步的技术导致程序不能精准地确定什么时间什么元素完全加载完成,如果实际页面等待时间过长,这将会导致元素不完全,但是代码将会直接使用,所以就会报错。

为了避免这种元素不好定位且错误概率高,Selenium提供了两种等待方式

        1.隐式等待

                隐式等待是指等待特定的时间

                隐式等待针对的是元素定位。它设置了一个时间,判断在该时间段内,元素定位是否成功。

                如果成功了,就进行下一步。如果没成功,就直接报超时。

代码语言:javascript
复制
from selenium import webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(10) # 隐式等待10秒
driver.get('https://www.baidu.com/')
myDynamicElement = driver.find_element_by_id("input")

        2.显式等待

                显式等待是指定的某一条件成立时继续执行

                即等待某个指定的元素,然后设置最长等待时间,如果在这个时间内还没有找到元素,则程序将会抛出异常。

代码语言:javascript
复制
from selenium import webdriver
from selenium.webdriver.common.by import By
# WebDriverWait 库,负责循环等待
from selenium.webdriver.support.ui import WebDriverWait
# expected_conditions 类,负责条件出发
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
try:
    # 页面一直循环,直到 id="input" 出现
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "input"))
    )
finally:
    driver.quit()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ​ ​前言
  • 四、元素操作
    • 1、获取文本
      • 2、获取属性值
      • 五、前进后退
      • 六、执行js
      • 七、页面等待
        •         1.隐式等待
          •         2.显式等待
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档