selenium学习
Posted 保护眼睛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium学习相关的知识,希望对你有一定的参考价值。
如何定位页面上的元素
定位页面元素的原则:元素的属性是全局唯一的
获取页面元素的方式不是唯一的、但是获取元素时候要确保元素的属性是全局唯一的
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
# 通过id找到页面的元素
driver.find_element_by_id("kw").send_keys("hello")
driver.find_element_by_id("su").click()
# 通过css selector得到页面元素
driver.find_element_by_css_selector("#kw").send_keys("hello")
driver.find_element_by_css_selector("#su").click()
# 通过xpath定位
driver.find_element_by_xpath("//*[@id='kw']").send_keys("hello")
driver.find_element_by_xpath("//*[@id='su']").click()
# 通过class name定位
driver.find_element_by_class_name("s_ipt").send_keys("hello")
driver.find_element_by_class_name("bg s_btn btn_h btnhover").click()
# 通过tag name定位当然tag name 要是全局唯一的
driver.find_element_by_tag_name("input").send_keys("hello")
driver.find_element_by_tag_name("input").click()
# 通过link text定位
driver.find_element_by_link_text("视频").click()
driver.find_element_by_partial_link_text("频").click()
time.sleep(3)
driver.quit()
找到元素之后选择copy selector
如果页面元素的属性重复的话就不会找到元素,一定要确保页面元素的属性唯一
输入hello,点击搜索
然后点击搜索出来的百度翻译页面
如果中间不加时间间隔的话、程序执行的很快,第一个页面没有加载出来的时候,就已经执行到了driver.find_element_by_link_text(“hello - 百度翻译”)click(),所以不会找到所对应元素
所以要在两者之间加上等待的时间、使用sleep(10)可以等待固定的时间间隔,driver.implicitly_wait(10)是智能等待
获取文本的内容
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
text = driver.find_element_by_id("bottom_layer").text
print(text)
添加等待、清除clear()
time.sleep() 固定时间等待
驱动变量.implicity_wait()智能等待,不一定等待给定的时间
这两者等待的共同点:可以设置等待的时间,如果下一句要执行的代码的元素没有加载出来,都会抛出异常
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
# text = driver.find_element_by_id("bottom_layer").text
# print(text)
# 固定等待
# time.sleep(2)
# 智能等待
driver.find_element_by_id("kw").send_keys("hello")
driver.find_element_by_id("su").click()
# time.sleep(10)
driver.implicitly_wait(10)
driver.find_element_by_link_text("hello - 百度翻译").click()
time.sleep(10)
driver.quit()
# clear()用于清除元素中的内容
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
# 通过id找到页面的元素
driver.find_element_by_id("kw").send_keys("hello")
driver.find_element_by_id("su").click()
# 清除百度输入框中的内容
time.sleep(3)
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("testclear")
# driver.find_element_by_id("su").click()
driver.find_element_by_id("su").submit()
浏览器的后退、前进、滚动、窗口大小、最大化
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.find_element_by_id("kw").send_keys("hello")
driver.find_element_by_id("su").click()
time.sleep(3)
# 浏览器的后退
driver.back()
# 浏览器的前进
driver.forward()
# 浏览器的滚动条到浏览器的底端
js1 = "var q = document.documentElement.scrollTop=10000"
driver.execute_script(js1)
time.sleep(3)
# 浏览器的最顶端
js1 = "var q = document.documentElement.scrollTop=0"
driver.execute_script(js1)
time.sleep(3)
# 设置浏览器窗口的大小
print("设置浏览器宽480、高800显示")
driver.set_window_size(480, 800)
time.sleep(3)
# 浏览器的最大化
driver.maximize_window()
driver.quit()
以上是关于selenium学习的主要内容,如果未能解决你的问题,请参考以下文章
Selenium JavascriptExecutor 详解