selenium特殊场景模块的使用、对浏览器的按键操作及错误处理

from time import sleep

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.common.by import By

import logging

# logging.basicConfig(level=logging.DEBUG)

logging.basicConfig(level=logging.CRITICAL,format=' %(asctime)s - %(levelname)s -%(message)s')

url = "https://eshop.sta-wlab.com/fortress/en/pos/4360/product/list"

driver = webdriver.Chrome()

driver.get(url)

sleep(5)

driver.maximize_window()

sleep(2)

# 使用id定位搜索框

input = driver.find_element(By.XPATH, '//*[@id="__next"]/div[2]/div/div/div')

# htmlElem = driver.find_element_by_tag_name('html')

htmlElem = driver.find_element(By.TAG_NAME,'html') # 找到整个页面

# htmlElem.send_keys(Keys.PAGE_DOWN)

# htmlElem.send_keys(Keys.F12)

#  不能发送F5按键使浏览器窗口刷新(可以使用browser.refresh()),无论是对html标签元素还是其他元素使用均无效

# htmlElem.send_keys(Keys.F5) # 无效

sleep(2)

driver.refresh() # 刷新页面

sleep(6)

填写并提交表单

webElement对象方法 submit() ,在任何元素上使用 submit() 方法,都相当于点击该元素所在表单的submit按钮

import logging #此行以及下两行行是使用日志内容

logging.basicConfig(level=logging.CRITICAL,format=' %(asctime)s - %(levelname)s -%(message)s')

from selenium import webdriver

logging.disable(logging.ERROR)

browser=webdriver.Chrome()

browser.get('http://www.baidu.com')

try:

elem=browser.find_element_by_id('kw')

logging.critical('输入框已经找到')

elem.send_keys('长泽雅美') #是keys

logging.critical('内容已输入')

searchElem=browser.find_element_by_id('su')

logging.critical('按钮已经找到')

searchElem.submit()

logging.critical('已提交')

except:

print('没有找到这个元素。')

browser.quit()

  注意,不用在寻找提交按钮上花费太长时间,因为在任何元素上使用 submit() 方法,都等同于你点击了这个元素所属表单的提交按钮,你甚至可以这样(我不确定,你可以打开百度首页,输入内容演示一下,就能知道我的意思了你可能发现你不需要点击搜索按钮,就会出现搜索结果)

elem.submit() #改动在这里

logging.critical('已提交')

发送特殊键

  当我们需要向浏览器击键行为,如按下‘F12’,这时仅通过字符串值输入时不可能完成的,selenium为我们这种需要提供了一个解决办法:这些值保存在selenium.webdriver.common.keys模块的属性中。由于这个模块的名字非常长,我们可以通过from selenium.webdriver.common.keys import Keys,让from selenium.webdriver.common.keys.Keys.F12简写为:Keys.F12

  下表展示了一些selenium.webdriver.common.keys模块中常用的变量:

属性含义

Keys.DOWN,Keys.UP,Keys.LEFT,Keys.RIGHT键盘方向键

Keys.ENTER,Keys.RETURN回车键和换行键

Keys.HOME,Keys.END,Keys.PAGE_DOWN,Keys.PAGE_UP

Keys.ESCAPE,Keys.BACK_SPACE,Keys.DELETEEsc,backspace和消除键

Keys.F1,Keys.F2........Keys.F12

Keys.TAB

  示例:使页面向下滚动一次

import time

import logging #此行以及下两行行是使用日志内容

logging.basicConfig(level=logging.CRITICAL,format=' %(asctime)s - %(levelname)s -%(message)s')

from selenium import webdriver

logging.disable(logging.ERROR)

from selenium.webdriver.common.keys import Keys

browser=webdriver.Chrome()

browser.get('http://www.baidu.com')

try:

elem=browser.find_element_by_id('kw')

logging.critical('输入框已经找到')

elem.send_keys('xxxx') #是keys

logging.critical('内容已输入')

searchElem=browser.find_element_by_id('su')

logging.critical('按钮已经找到')

elem.submit()

logging.critical('已提交')

htmlElem=browser.find_element_by_tag_name('html')

htmlElem.send_keys(Keys.PAGE_DOWN)

except:

print('没有找到这个元素。')

time.sleep(3) #不加这个暂停看不出来效果

browser.quit()

  注意:

   (未证明)要对合适的元素对象使用相应的按键,如果上面你对'elem'使用这不会有效果

    是keys要加s 

  问题:使用Keys.PAGE_DOWN,时必须在前面加sleep()才能实现

import time

import logging #此行以及下两行行是使用日志内容

logging.basicConfig(level=logging.CRITICAL,format=' %(asctime)s - %(levelname)s -%(message)s')

from selenium import webdriver

logging.disable(logging.ERROR)

from selenium.webdriver.common.keys import Keys

browser=webdriver.Chrome()

browser.maximize_window()

browser.get('http://www.baidu.com')

try:

elem=browser.find_element_by_id('kw')

logging.critical('输入框已经找到')

elem.send_keys('长泽雅美') #是keys

logging.critical('内容已输入')

searchElem=browser.find_element_by_id('su')

logging.critical('按钮已经找到')

elem.submit()

logging.critical('已提交')

htmlElem=browser.find_element_by_tag_name('html')

logging.critical('html标签已找到')

time.sleep(2)

elem.send_keys(Keys.PAGE_DOWN)#必须前面使用sleep()暂停才有用

logging.critical('按键已激发')

except:

print('没有找到这个元素。')

time.sleep(10)

browser.quit()

  不能发送F5按键使浏览器窗口刷新(可以使用browser.refresh()),无论是对html标签元素还是其他元素使用均无效

import time

import logging #此行以及下两行行是使用日志内容

logging.basicConfig(level=logging.CRITICAL,format=' %(asctime)s - %(levelname)s -%(message)s')

from selenium import webdriver

logging.disable(logging.ERROR)

from selenium.webdriver.common.keys import Keys

browser=webdriver.Chrome()

browser.maximize_window()

browser.get('http://www.baidu.com')

try:

elem=browser.find_element_by_id('kw')

logging.critical('输入框已经找到')

elem.send_keys('长泽雅美') #是keys

logging.critical('内容已输入')

searchElem=browser.find_element_by_id('su')

logging.critical('按钮已经找到')

elem.submit()

logging.critical('已提交')

htmlElem=browser.find_element_by_tag_name('html')

logging.critical('html标签已找到')

time.sleep(2)

elem.send_keys(Keys.F5)#必须前面使用sleep()暂停才有用

logging.critical('按键已激发')

except:

print('没有找到这个元素。')

time.sleep(10)

browser.quit()

点击浏览器按钮

  这里的浏览器按钮指的是浏览器应用里的按钮,

  browser.back()  点击返回按钮

  browser.froward()  点击前进按钮

  browser.refresh()  点击刷新按钮

  browser.quit()  点击关闭窗口按钮

selenium的更多信息

    browser.maximize_windows():设置浏览器大小为全屏

    browser.set_window_size(500,500):设置浏览器窗口大小为500*500

    组合键操作:https://www.cnblogs.com/mengyu/p/6942584.html

    更详细的信息包括 拖放:https://www.cnblogs.com/zhongyehai/p/9163740.html

    说send_keys()不能输入中文的解决办法是send_keys(u' ')

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值