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' ')