文章目录
web自动化之selenium的特殊用法(二)
selenium-键盘操作,keys的的使用
(1)keys包的导入
(2)组合键使用
(4)常用组合键
(5)常用功能键
Python-Selenium:如何通过click在新的标签页打开链接?
selenium 带有空格的class name且不唯一的元素定位
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)
这段代码可以看到浏览器打开百度,输入内容,然后全选输入的内容,再退格删除。
(3)常用组合键
功能 |
语句 |
全选(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’) |
(4)常用功能键
功能 |
代码 |
回车 |
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']")