selenium中的常用命令/模块/参数总结

1.导入所需要的模块

from selenium.webdriver.chrome.options import Options
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

2.构建带有参数的谷歌浏览器

opt = Options()
opt.add_argument('--no-sandbox')          #解决DevToolsActivePort文件不存在的报错
opt._arguments = ['disable-infobars']     #去掉谷歌浏览器正在被自动测试控制字样
opt.add_argument('window-size=1920x3000') #指定浏览器分辨率
opt.add_argument('--disable-gpu')         #谷歌文档提到需要加上这个属性来规避bug
opt.add_argument('--hide-scrollbars')     #隐藏滚动条, 应对一些特殊页面
# 不加载图片, 提升速度
opt.add_argument('blink-settings=imagesEnabled=false') 
# 加载用户信息的谷歌浏览器
opt.add_argument("--user-data-dir="+r"C:\Users\Administrator\AppData\Local\Google\Chrome\User Data") 
opt.add_argument('--headless')            #浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
# 添加UA
opt.add_argument('user-agent="MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"')
opt.add_argument('--no-sandbox')          #以最高权限运行
opt.add_argument("--disable-javascript")  #禁用JavaScript
# 设置开发者模式启动,该模式下webdriver属性为正常值
opt.add_experimental_option('excludeSwitches', ['enable-automation']) 
# 禁用浏览器弹窗
prefs = { 'profile.default_content_setting_values' :  { 'notifications' : 2 }}  
opt.add_experimental_option('prefs',prefs)
opt.add_argument('--disable-plugins')     #禁止插件
# 禁用弹出拦截
opt.add_argument('--disable-popup-blocking')     
# 调用带参数的谷歌浏览器  
driver = webdriver.Chrome(chrome_options=opt)  

3.设置窗口大小

driver.maximize_window()           #窗口最大化
driver.set_window_size(480, 800)   #设置窗口大小

4.调节最大等待时间

wait = WebDriverWait(driver, 15)    

在这里插入图片描述
在这里插入图片描述

5.加载指定网址

driver.get(url)

6.位置定位及交互

#查找元素方法
find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector
#实例
wait.until(EC.presence_of_element_located((By.XPATH,'')))  #以Xpath定位第一个满足元素,等待最大响应时间 
driver.find_element_by_xpath('').click()                   #以Xpath定位第一个满足元素,并进行点击操作
driver.find_elements_by_id("")							   #以属性ID定位所有满足的元素
driver.find_element_by_id('jgwab').text               	   #获取控件id为’jgwab’所显示的内容
driver.find_element_by_id('su').get_attribute('type')      #获取控件id为’su’的属性,例如button,radio等
driver.find_element_by_id('kw').size                       #获得控件的尺寸
# 以属性ID定位第一个满足元素,等待最大响应时间
input = wait.until(EC.presence_of_element_located((By.ID, "")))
input.send_keys('')      #输入文本信息
input.clear()			 #清空

如果 以上方法都定位不到控件,说明很可能在iframe里,下面为切换到iframe的方法

driver.switch_to.frame(1)               #转入网页内iframe(内嵌的网页元素)
driver.switch_to.parent_frame()         #切回上一层frame
driver.switch_to_default_content()      #返回到主页面

7.切换网页窗口

driver.execute_script('window.open()')  # 开启一个选项卡
windows=driver.window_handles           # 获得当前浏览器所有窗口
driver.switch_to.window(windows[0])     # 切换到最左侧窗口
driver.switch_to.window(windows[-1])    # 切换到最新打开窗口(注:也就是最右侧窗口)

8.滚动条操作

# 将滚动条从 0px的地方移动到5000px的地方
driver.execute_script("window.scrollBy(0,5000)")  
# 滚动到页面底部
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
# 滚动到页面顶部
driver.execute_script("window.scrollTo(document.body.scrollHeight,0)")
# 将滚动条向上移动500px单位
driver.execute_script("window.scrollTo(document.body.scrollHeight,500)")

9.浏览器操作

driver.back()         #返回界面
driver.forward()	  #前进界面
driver.refresh()      #刷新界面

10.获取网页信息

driver.current_url            # 获取当前网址
driver.page_source            # 获取源代码
driver.title                  # 获取当前页面标题内容
driver.delete_all_cookies()   # 删除所有cookie
driver.add_cookie({'name':5}) # 添加cookie
  • 获取cookies
driver.get_cookies()  
cookie_list = []
for dict in cookies:
    cookie = dict['name'] + '=' + dict['value']
    cookie_list.append(cookie)
cookie = ';'.join(cookie_list)
  • 获取属性
logo = browser.find_element_by_id ('zh-top-link-logo') 
print(logo.get_attribute('class'))
  • 获取文本值
logo.text
  • 获取 id 、位置、 标签名和大小
logo.id
logo.location
logo.tag_name
logo.size

11.窗口截图

driver.get_screenshot_as_file("scr.jpg")

12.提交表单

submit()方法用于提交表单,这里特别用于没提交按钮的情况

例如搜索框输入关键字之后的“回车”操作,那么就可以通过submit()来提交搜索框的内容。

driver.find_element_by_id('query').submit()

13.实现某个节点的拖曳操作,将某个节点从一处拖曳到另外一处

from selenium.webdriver import ActionChains
source = driver.find_element_by_xpath('')
target = driver.find_element_by_xpath('')
actions = ActionChains(driver)
actions.drag_and_drop(source, target)
actions. perform()

14.取消选择已经选择的元素

select = Select(driver.find_element_by_id('id'))
select.deselect_all()

15.层级定位

driver.find_element_by_id('ShippingMethod').find_element_by_xpath("//option[@value='7.45']").click()

16.元素是否可见

返回元素的结果是否可见,返回结果为True 或False

result=driver.find_element_by_id("kw").is_displayed()

17.模拟鼠标操作

from selenium.webdriver.common.action_chains import ActionChains
# 鼠标右击,perform() 是执行方法的语句
ActionChains(driver).context_click(driver.find_element_by_xpath("//*[text()='最新热剧']")).perform()
# 鼠标双击
ActionChains(driver).double_click(driver.find_element_by_id('kw')).perform()
# 停留在文本搜索框上
ActionChains(driver).move_to_element(driver.find_element_by_id('kw')).perform()
# 点击并且停留在搜索按钮上
ActionChains(driver).click_and_hold(driver.find_element_by_id('su')).perform()

18.模拟键盘操作

from selenium.webdriver.common.keys import Keys
driver.find_element_by_id('kw').send_keys(Keys.BACK_SPACE)   #Backspace键
driver.find_element_by_id('kw').send_keys(Keys.SPACE)        #Space键
driver.find_element_by_id('kw').send_keys(Keys.DELETE)       #Delete键
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'a')  # CTRL + A
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'x')  # CTRL + X
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'v')  # CTRL + V
driver.find_element_by_id('kw').send_keys(Keys.ENTER)        #ENTER键
driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'c')  # CTRL + C
driver.find_element_by_id('kw').send_keys(Keys.TAB)          # TAB键

19.关闭浏览器

driver.close()  #关闭当前窗口
driver.quit()   #退出浏览器
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风前絮啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值