4.1自动化测试
自动化工具、框架的选择
Selenium Webdriver
chrome_option.add_argument('--proxy-server=127.0.0.1:8080')
启动浏览器:webdriver.Chrome()
跳转网址:driver.get("网址")
检查页面
form selenium.webdriver.support import expected_conditions as EC
EC.title_contains("注册")
定位元素信息
find_element_by_id().send_keys()
find_elment_by_class_name("")
locator=(By.CLASS_NAME,'')
webDriverWait(driver,10).until(EC.visibility_of_element_located(locator))
driver.close()
等待元素消失时或出现时执行操作
使用expected_conditions模块中的方法
使用WebDriverWait
操作下拉滚动条
1.直接操作页面 2.拖动到页面元素位置 3.发送PAGE_DOWN、END等键盘事件
4.
设置下载文件存储路径
download.default_directory
:设置下载路径profile.default_content_settings.popups
:设置为0
禁止弹出窗口查找下载的文件
快速消失弹框或toast的抓取
1.F12开发开发者工具
2.Network→online→add...→Add custom profile...
3.自定义网络流速(如:Download:1kb Upload:1kb Latency:10000ms)
4.勾选自定义的网络流速,进行通讯。这时,由于网路被限,弹框消失的速度也就慢了下来。
常见问题
1.ElementNotInteractableException: Message: Element is not visible
原因:浏览器窗口太小,导致元素不可见
解决方法:设置更大的浏览器宽度或全屏,若全屏幕任然无法显示信息,请操作滚动条
driver.set_window_size(620,600)
driver.maximize_window()
2.WebDriverException: Message: unknown error: Element is not clickable at point (). Other element would receive the click:
解决方法:设置等待时间或更改鼠标点击事件为键盘事件
time.sleep(2)
follow_button.send_keys("\n")
3.定位不到元素
原因:
定位元素的id会动态改变
定位元素在某一个frame里
解决方法:切换到frame中再定位。driver.switchTo().frame("{frame_name}")
不在同一个frame里边查找元素
解决方法:切换frame。driver.switchTo().frame("{frame_name}")切换到其他frame,driver.switchTo().defaultContent()切换会默认content
点击速度过快,页面还没有加载出需要的元素。
解决方法:设置等待时间。time.sleep({等待时间})或WebDriverWait().until()
firefox安全性强,不允许跨域调用出现报错
Last updated
Was this helpful?