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()
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值