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)

Top --- Bottom

二、设置网络延迟等待

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


Top --- Bottom

三、元素加载出来却定位不到

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")进行切换,切换后数据可以正常获取了!


Top --- Bottom

四、操作文本框

定位到某个文本框这是基本操作,但是我们怎么对文本框进行一些 类似于在键盘上的操作呢?

清除与书写

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


完!

posted @ 2021-08-28 10:49  巴蜀秀才  阅读(33)  评论(0编辑  收藏  举报