python selenium自動化(三)Chrome Webdriver的兼容

當一個自動化測試被實現在一個瀏覽器之后,我們會希望我們的測試能夠覆蓋到盡量多的別的瀏覽器。通過跨平臺的測試來保證我們的程序在多個瀏覽器下都能正常工作。

?

在安裝了selenium之后,firefox webdriver和IE webdriver就已經是ready to use的了,但是如果想要在Chrome下進行測試的話需要再安裝Chrome webdriver。Chrome webdriver是由Chromium項目自己維護的,因此在實現上也和Firefox driver以及IE driver有一些不同之處。這就導致了在將在Firefox上可以正常運行的測試代碼運用到chrome時會產生一些兼容性的問題。

?

1. WebDriverWait的可靠性

上一篇博客提到過,當頁面上有使用ajax異步加載的元素的時候,為了確保對元素進行操作的時候該元素已經處在一個可用的狀態下了,我們可以使用WebDriverWait來使driver等待至目標元素滿足給出的條件時才繼續下面的操作。但是在Chrome中,這個方法似乎不是總是適用。

?

2.一些奇怪的異常

總的來說,測試代碼在Chrome下的運行是非常快的,至少人眼就可以感覺出來比Firefox下的運行速度要快一點,當然這是在不報異常的情況下。而實際情況是,在Firefox下可以正常運行的代碼,在Chrome下卻會出現問題,并且拋出一些奇怪的異常:

selenium.common.exceptions.WebDriverException: Message: u'unknown error: Element is not clickable at point

selenium.common.exceptions.InvalidElementStateException: Message: u'invalid element state

selenium.common.exceptions.ElementNotVisibleException: Message: u'element not visible 

第一個異常的拋出一般會發生在radio button的點擊事件上,但是一般異常拋出的同時,系統會告訴你當前的element不可以被點擊,但是另外的某個元素可以接受這個點擊事件。這時我們可以查看頁面上系統給出的備選元素是否也可以滿足我們的點擊需求,如果可以,我們可以簡單的把radio button換成這個備選元素來回避這個異常。

另外,這三個異常都與Chrome的運行速度以及WebDriverWait的可靠性有一定關系。因此,我們可以稍顯“粗暴”的讓webdriver休眠一段時間來slow down測試代碼的執行速度,強制driver等待一個固定的時間來讓元素加載完成。

import time
#some test code 
time.sleep(2) 
#continue test code

time.sleep(2)會使driver休眠兩秒,然后再繼續執行后面的測試代碼

?

3.不在當前視圖范圍內的元素的操作

當我們使用Firefox webdriver來測試某個頁面的時候,如果我們選取了某個頁面元素來對其進行操作,但是這個元素不在當前瀏覽器顯示的視圖范圍內,Firefox webdriver的做法是自動的將視圖調整到該元素顯示的區域,然后對這個元素進行操作。也就是說driver自己完成了頁面的scroll down or up的操作。

但是在Chrome webdriver中,如果待操作元素不在視圖顯示范圍內,則會拋出Element is not clickable at point異常。或是如果設置了WebDriverWait并且它正常工作的話會拋出Timeout異常。

因此,在使用Chrome wbedriver的時候,我們要更加小心,對于需要滾動頁面才能顯示在視圖中的元素,我們需要添加代碼使頁面滾動至元素顯示的范圍,然后再對該元素進行操作。使頁面滾動的方法是:

driver.execute_script("window.scrollBy(0,200)","")  #向下滾動200px
driver.execute_script("window.scrollBy(0,document.body.scrollHeight)","")  #向下滾動到頁面底部  

?

轉載于:https://www.cnblogs.com/harolei/p/3466284.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259075.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259075.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259075.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NDK 編譯armebai-v7a的非4字節對齊crash Fatal signal 7 (SIGSEGV) 錯誤解決

一直都是編譯armabi的。沒有不論什么問題,這個架構是軟件模擬浮點運算的。后來看到NDK文檔上說armabi-v7a是針對有硬件處理浮點計算的arm cpu的。 于是就改動配置編譯armebai-v7a的so文件。 結果是編譯沒問題。一執行就是crash掉,Fatal signal 7 (SIGSEG…

作業三

作業三 第一章問題:書上寫的“Bug的多少可以直接衡量一個軟件的開發效率、用戶滿意度、可靠性和可維護性”,那么一個比較完好的軟件中一般大概會出現多少Bug? 第二章問題:現在開始訓練寫更多的程序能否更早地達到軟件工程師的標準&#xff1…

springboot默認數據源如何設置連接數_Spring Boot系列之配置數據庫連接池

在實際的應用開發中,與數據庫交互通常使用數據庫連接池來重用Connection對象,減少資源消耗。Spring Boot 的數據源是自動配置的。在 Spring Boot 2.2.1 版本中,有幾種數據源配置可選,它們按照 HikariCP -> Tomcat -> DBCP2 …

使用Qt正則表達式提取全路徑的文件名

問題描述: 給定三個全路徑,例如 path1"C:/Users/asus/Desktop/nefertiti_4465.obj"; path2"C:/Users/asus/Desktop/nefertiti_4465_k1.txt"; path3"C:/Users/asus/Desktop/nefertiti_4465_k2.txt"; 我希望說明path2和pa…

Beyond Compare 3.3.8 build 16340 + Key

本文摘錄自冰點社區:http://forum.z27315.com/topic/14746-beyond-compare-338-build-16340-key/ Download Beyond Compare 3 Current Version: 3.3.8, build 16340, released June 19, 2013 Windows 版本 Windows Standard and Pro EditionsEnglish version 5800k…

hdu 1198 Farm Irrigation

題目鏈接: http://acm.hdu.edu.cn/showproblem.php?pid1198 題目大意: 有一大塊土地需要澆水,這塊土地由很多的小塊土地(有十一種)組成,小塊土地上有水溝,問至少需要建幾個井,才能灌…

strcpy_s、sptintf_s與strcat_s的使用

strcpy_s、sptintf_s與strcat_s是strcpy、sptintf與strcat的安全版本,均是通過指定緩沖區長度來避免存在的溢出風險。 strcpy_s 與strcpy strcpy_s和strcpy函數的功能幾乎是一樣的。strcpy函數,就象gets函數一樣,它沒有方法來保證有效的緩沖…

小米一鍵上鎖工具_小米首款高端全自動智能鎖火熱預售中,一觸開啟全自動時代...

近些年,隨著科技的發展,人工智能逐漸走入大眾視野。人類社會也正從信息時代向“智能時代”過渡,在整個過程中智能家居領域的蓬勃發展可謂當仁不讓,一直備受用戶矚目。智能鎖作為家的第一道守護防線,家庭物聯網入口的關…

Eigen+suitesparse for windows 安裝

Eigen是著名的C矩陣運算庫,提供了許多矩陣運算的接口,主要包括兩大部分,一部分是稠密矩陣,另一部分是稀疏矩陣。Eigen以源碼形式提供給大家,用的時候,只要將源碼包含在項目的包含路徑上,具體安裝…

軟件盤控制的問題

2019獨角獸企業重金招聘Python工程師標準>>> 在全屏模式或者是沉寢室標題欄 方案一:全屏模式 1.軟鍵盤被EditText遮擋住了,如果說EditText被嵌套在有滑動的視圖中,采取的方式是: activity中設置此屬性 android:windowSoftInputMode"…

python語言學習零基礎教學視頻_Python告白小白視頻教程(零基礎入門)

1 Python編程基礎入門篇通過本次課程的學習,我們每個人都可以進入python世界里,從簡單到高級,讓人人都能學會python,我們在學習的時候,python讓我們的運維變得更有樂趣,讓我們的運維更加的高大上&#xff0…

SQL 快速入門2.1

MySQL top(MySQL limit)語法 SELECT column_name(s) FROM table_name LIMIT number 例子 SELECT * FROM Persons LIMIT 5 SQL LIKE 操作符 SQL LIKE 操作符語法 SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern 原始的表 (用在例…

sencha touch 入門系列 (一)sencha touch 簡介

參考鏈接:http://mobile.51cto.com/others-278381.htm Sencha touch 是基于JavaScript編寫的Ajax框架ExtJS,將現有的ExtJS整合JQTouch、Raphaël庫,推出適用于最前沿Touch Web的移動應用開發框架,該框架是世界上第一個 基于HTML5的Mobile App框架…

求二叉樹的深度和寬度

// 求二叉樹的深度和寬度.cpp : 定義控制臺應用程序的入口點。 <pre name"code" class"cpp">#include <iostream> #include <queue> using namespace std;struct BTNode {char m_value;BTNode *m_left;BTNode *m_right; };//先序創建二叉…

漢堡包

在我們結對的這些天里&#xff0c;我清晰的感受到同伴對我的幫助&#xff0c;每當我有不懂的時候她都會積極的幫助我&#xff0c;也會聽取我的意見積極配合我&#xff0c;在我懶惰的時候也能夠提醒督促我&#xff0c;我想這些只有結對時才能體會到。我們都知道&#xff0c;結對…

zabbix自動發現監控磁盤(iops和讀寫量)

2019獨角獸企業重金招聘Python工程師標準>>> 對于磁盤有個iops的概念比較奇怪&#xff0c;想監控起來看下&#xff0c;利用zabbix的自動發現把每個磁盤的iops監控起來&#xff0c;思路&#xff1a;自動發現所有的磁盤&#xff0c;然后監控各個磁盤的iops。效果如下圖…

一個表單同時向兩個頁面傳值

現在有一個表單<form action"AddNewstu.asp" METHOD"POST" ><INPUT TYPE "Text" NAME "name" SIZE "20"><BR></FORM>此表單向AddNewstu.asp頁面傳入了一個name的值&#xff0c;如果同時把name…

matlab內置函數fitgeotrans與transformPointsForward解析

最近研究3000fps的實現&#xff0c;看了網上給的一個matlab代碼&#xff0c;里面有提到init_shape到mean_shape的對齊&#xff0c;里面使用了fitgeotrans和transformPointsForward兩個函數。于是參考matlab help研究了一下這兩個函數. fitgeotrans函數 語法: tform fitgeotr…

【電腦使用經驗】怎么查看無線網絡中電腦的IP地址?

1、 2、 3、 4、 5、 轉載于:https://www.cnblogs.com/happykoukou/p/4437111.html

win8硬盤安裝Ubuntu14.04雙系統參考教程

硬盤安裝&#xff0c;無需光盤、U盤。win8為主。Ubuntu14.04為輔。可將Windows或Ubuntu設置為開機默認啟動項。在Ubuntu下可查看、操作Windows系統下的文件&#xff1b;適用于安裝和14.04版本號相近的Ubuntu系統。假設以上所述正是你所須要的。那么這可能是一篇您值得參考的教程…