Selenium简单基础详解(II)

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

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


四、元素操作

1、获取文本

			
  1. ret = browser.find_element_by_class_name('element')
  2. print(ret[0].text)

2、获取属性值

			
  1. ret = browser.find_element_by_tag_name('a')
  2. print(ret[0].get_attribute('href'))

五、前进后退

			
  1. # 前进
  2. browser.forward()
  3. # 后退
  4. browser.back()

六、执行js

			
  1. from selenium import webdriver
  2. browser = webdriver.Chrome()
  3. url = 'https://www.baidu.com/'
  4. browser.get(url)
  5. js = 'window.scrol1To(O,document.body.scrollHeight)' # js语句
  6. browser.execute_script(js) # 执行js的方法
  7. browser.quit()

七、页面等待

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

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

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

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

        1.隐式等待

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

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

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

			
  1. from selenium import webdriver
  2. driver = webdriver.Chrome()
  3. driver.implicitly_wait(10) # 隐式等待10秒
  4. driver.get('https://www.baidu.com/')
  5. myDynamicElement = driver.find_element_by_id("input")

        2.显式等待

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

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

						
  1. from selenium import webdriver
  2. from selenium.webdriver.common.by import By
  3. # WebDriverWait 库,负责循环等待
  4. from selenium.webdriver.support.ui import WebDriverWait
  5. # expected_conditions 类,负责条件出发
  6. from selenium.webdriver.support import expected_conditions as EC
  7. driver = webdriver.Chrome()
  8. driver.get('https://www.baidu.com/')
  9. try:
  10. # 页面一直循环,直到 id="input" 出现
  11. element = WebDriverWait(driver, 10).until(
  12. EC.presence_of_element_located((By.ID, "input"))
  13. )
  14. finally:
  15. driver.quit()


全部评论
Selenium简单基础详解
点赞 回复 分享
发布于 2022-10-19 15:41 河南

相关推荐

10-27 02:29
已编辑
门头沟学院 嵌入式工程师
牛客72783561...:简历不是这么写的,你这两个项目只说了用到了什么技术,却没说取得了什么成果,在我看来这就是你自己做的一个demo,没有价值。你为什么不写你电赛国二的那个项目?
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务