web自动化之selenium的特殊用法(二)

2022-06-30 18:51:49 浏览数 (1)

目录

selenium-键盘操作,keys的的使用

(1)keys包的导入

(2)组合键使用

(4)常用组合键

(5)常用功能键

Python-Selenium:如何通过click在新的标签页打开链接?

selenium 带有空格的class name且不唯一的元素定位

selenium-键盘操作,keys的的使用

(1)keys包的导入

selenium有很完整的键盘操作,都在keys模块里

代码语言:javascript复制
#导入keys包
from selenium.webdriver.common.keys import Keys

(2)组合键使用

代码语言:javascript复制
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在新的标签页打开链接?

代码语言:javascript复制
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属性定位大法

代码语言:javascript复制
Element=driver.find_element_by_css_selector("[class='col3 fcweak ft12 tal']")

0 人点赞