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

操作下拉滚动条

参考:selenium操作下拉滚动条的几种方法

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?