[TOC]
目录
web自动化之selenium的特殊用法(二)
selenium-键盘操作,keys的的使用
(1)keys包的导入
selenium有很完整的键盘操作,都在keys模块里
#导入keys包
from selenium.webdriver.common.keys import Keys
(2)组合键使用
KeysWord_Box = driver.find_element_by_xpath('//*[@id="kw"]')
#搜索框输入内容
KeysWord_Box.send_keys('test')
time.sleep(3)
#Keys.CONTROL代表ctrl键,'a'代表了A键,所以ctrl+A全选就实现了
KeysWord_Box.send_keys(Keys.CONTROL,'a')
#Keys.BACKSPACE代表退格键
KeysWord_Box.send_keys(Keys.BACKSPACE)
这段代码可以看到浏览器打开百度,输入内容,然后全选输入的内容,再退格删除。
(4)常用组合键
功能 | 语句 |
---|---|
全选(Ctrl+A) | send_Keys(Keys.CONTROL,‘a’) |
复制(Ctrl+C) | send_keys(Keys.CONTROL,‘c’) |
剪切(Ctrl+X) | send_keys(Keys.CONTROL,‘x’) |
粘贴(Ctrl+V) | send_keys(Keys.CONTROL,‘v’) |
(5)常用功能键
功能 | 代码 |
---|---|
回车 | Keys.ENTER |
删除 | Keys.BACK_SPACE |
空格 | Keys.SPACE |
制表 | Keys.TAB |
回退 | Keys.ESCAPE |
刷新 | Keys.F5 |
Python-Selenium:如何通过click在新的标签页打开链接?
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get(url)
# 查找帖子列表(40条)
post_list = driver.find_elements(By.XPATH, '//ul[@id="waterfall"]/li/h3/a[1]')
# 存储原始窗口的 ID
original_window = driver.current_window_handle
for i in range(0, 40):
# 点击进入帖子
print(f'第{i + 1}个帖子')
# 获取帖子链接
href = post_list[i].get_attribute('href')
# 在新的标签页打开链接
driver.execute_script(f'window.open("{href}", "_blank");')
# 切换到新的标签页
driver.switch_to.window(driver.window_handles[-1])
# 单独处理
do sth...
# 关闭当前标签页
driver.close()
# 切回到之前的标签页
driver.switch_to.window(original_window)
driver.quit()
selenium 带有空格的class name且不唯一的元素定位
有些class属性中间有空格,如果直接复制过来定位是会报错的InvalidSelectorException: Message:
The given selector u-label f-dn is either invalid or does not result in a WebElement. The following error occurred:
InvalidSelectorError: Compound class names not permitted
这个报错意思是说定位语法错了。
class属性中间的空格并不是空字符串,那是间隔符号,表示的是一个元素有多个class的属性名称
直接包含空格的CSS属性定位大法
Element=driver.find_element_by_css_selector("[class='col3 fcweak ft12 tal']")