selenium库学习笔记(三)
selenium常用功能
作者:elfin
一、解除”正受到自动测试软件的控制“警告
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
chrome_options = webdriver.ChromeOptions()
# chrome 正受到自动测试软件的控制
chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])
driver = webdriver.Chrome(options=chrome_options)
二、设置网络延迟等待
selenium点击只是一瞬间,默认不会登页面加载完成再进行后续操作,往往导致操作间隔太短、或tag没有找到的bug。建议设置显示等待或隐式等待。
# 隐式等待
driver.implicitly_wait(50)
# 显示等待, 等待目标元素被加载出来
from selenium.webdriver.support.wait import WebDriverWait
wait = WebDriverWait(driver, 20, 0.5)
try:
wait.until(ec.presence_of_element_located((By.ID, 'loginname')))
wait.until(ec.presence_of_element_located((By.XPATH, '//*[@id="pl_login_form"]/div/div[3]/div[2]/div/input')))
except Exception as e:
print(e)
可以参考:https://www.cnblogs.com/dan-baishucaizi/articles/8856478.html
三、元素加载出来却定位不到
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element
这个可能在我们不熟悉的时候经常犯的错。程序现在说没有目标元素,但是你在前端又有相应的元素。这个时候我们就要考虑是不是有frame导致的。解决方法如下:
driver.switch_to.frame("dataInfo")
例如下面的场景:

根据报错,我们查看html代码,发现了iframe标签,所以使用driver.switch_to.frame("dataInfo")
进行切换,切换后数据可以正常获取了!
四、操作文本框
定位到某个文本框这是基本操作,但是我们怎么对文本框进行一些 类似于在键盘上的操作呢?
清除与书写
driver.find_element_by_xpath('//*[@id="gridpage_center"]/table/tbody/tr/td[4]/input').clear()
driver.find_element_by_xpath('//*[@id="gridpage_center"]/table/tbody/tr/td[4]/input').send_keys(544)
回车与全选
from selenium.webdriver.common.keys import Keys
driver.find_element_by_xpath('//*[@id="gridpage_center"]/table/tbody/tr/td[4]/input').send_keys(Keys.ENTER)
driver.find_element_by_xpath('//*[@id="gridpage_center"]/table/tbody/tr/td[4]/input').send_keys(Keys.CONTROL,'a')
更多操作参考

图片来源于:https://blog.csdn.net/weixin_44065501/article/details/89314538
完!
清澈的爱,只为中国