webdriver(python)學習筆記七——多層框架定位與智能等待

多層框架或窗口定位:

  • switch_to_frame()
  • switch_to_window()

智能等待:

  • implicitly_wait()

現在web應用中經常會遇到框架如(frame)或窗口(windows)的應用,這樣定位就比較難,有時定位一個元素,定位器沒有問題,但是就是定位不到,這時就需要檢查一下這個元素是否存在在一個frame中。

webdriver中switch_to_frame()就可以解決這個問題。

代碼1(frame.html):

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>frame</title>
<script type="text/javascript" async=""
src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
"></script>
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" />
<script type="text/javascript">
$(document).ready(function(){
});
</script>
</head>
<body>
<div class="row-fluid">
<div class="span10 well">
<h3>frame</h3>
<iframe id="f1" src="innerhtml" width="800",
height="600"></iframe>
</div>
</div>
</body>
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
</html>

代碼2(inner.html):

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>inner</title>
</head>
<body>
<div class="row-fluid">
<div class="span6 well">
<h3>inner</h3>
<iframe id="f2" src="http://www.baidu.com" width="700"
height="500"></iframe>
<a href="javascript:alert('watir-webdriver better than
selenium webdriver;')">click</a>
</div>
</div>
</body>
</html>


frame中嵌套inner,兩個腳本放在同一個目錄下。

代碼如下:

#coding=utf-8
from selenium import webdriver
from time import sleep
import os
br= webdriver.Firefox() file_path = 'file:///' + os.path.abspath('frame.html') br.get(file_path)br.implicitly_wait(30)
#先找到到iframe1(id = f1) br.switch_to_frame("f1")
#再找到其下面的iframe2(id =f2) br.switch_to_frame("f2")#下面就可以正常的操作元素了 br.find_element_by_id("kw").send_keys("selenium") br.find_element_by_id("su").click() sleep(1)br.quit()


按上面方式就可以定位到元素


switch_to_window()

?

有可能嵌套的不是框架,而是窗口,對窗口的方法:switch_to_window(),用法與switch_to_frame?相同:dr.switch_to_window("windowName")

?

br.implicitly_wait(30)

它可以在一個時間范圍內智能的等待。而slepp(2)是一個固定的時間。

文檔解釋:

selenium.webdriver.remote.webdriver.implicitly_wait(time_to_wait)

隱式地等待一個無素被發現或一個命令完成;這個方法每次會話只需要調用一次

time_to_wait:?等待時間

?

用法:driver.implicitly_wait(30)

?

?

?

轉載于:https://www.cnblogs.com/kongzhongqijing/p/3534197.html

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

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

相關文章

bbp代碼python_如何正確計算加密債券價格的BBP(Bollinger波段百分比)?

我試圖用這個代碼計算python中的BBP(Bollinger頻帶百分比)。然而&#xff0c;我的^{cd1>}函數返回^{{cd2>}或^{cd3>}用于^{cd4>}。當我使用一些硬幣收盤價時&#xff0c;令人困惑的是&#xff0c;這個函數返回正確的^{cd4>}數字(而不是inf)。這是我的python代碼…

ASP.NET學習路線圖

轉自&#xff1a;http://www.cnblogs.com/huangmeimujin/archive/2011/08/08/2131242.html 如果你已經有較多的面向對象開發經驗&#xff0c;跳過以下這兩步&#xff1a; 第一步 掌握一門.NET面向對象語言&#xff0c;C#或VB.NET 我強烈反對在沒系統學過一門面向對象(OO)語言的…

centos 多個mysql數據庫_CentOS6.5 一臺服務器同時安裝多個Mysql數據庫

建用戶與組groupadd mysqluseradd -g mysql mysql下載源碼&#xff1a;wget https://downloads.mariadb.org/interstitial/mariadb-10.1.10/source/mariadb-10.1.10.tar.gztar -xvf mariadb-10.1.10.tar.gz1、編譯&#xff1a;cmake . -DCMAKE_INSTALL_PREFIX/var/lib/mysql33…

MVC3學習 一 ViewBag和Html.Raw

ViewBag類似于JavaScript的語法&#xff0c;在賦值時動態賦值&#xff0c;比如ViewBag.Dog“哈哈” &#xff0c;這樣就會創建一個ViewBag.Dog的對象&#xff0c;供前端頁面調用。 在調用時&#xff0c;前臺頁面用razor方式&#xff0c;ViewBag 直接使用。 public class HomeCo…

PHPCMS源碼分析(二)

index.php中引入了phpcms框架的入口文件&#xff0c;下面我們看下這個入口文件 /phpcms/base.php define(IN_PHPCMS, true);//防止惡意調用//PHPCMS框架路徑 define(PC_PATH, dirname(__FILE__).DIRECTORY_SEPARATOR); //重新定義網站根目錄 if(!defined(PHPCMS_PATH)…

mysql 5.6密鑰_MySQL的密鑰文件不正確

我遇到了InnoDB的問題(表是最初的MyISAM,但是之前將它轉換為InndoB)表;我正在嘗試運行此查詢&#xff1a;SELECTposts.id,posts.post_titleFROMrss_posts AS postsINNER JOIN rss_feeds AS feeds ON posts.blog_idfeeds.idWHEREfeeds.blog_language1ORDER BYposts.post_date_db…

JS-取出字符串中重復次數最多的字符并輸出

/**取出字符串中重復字數最多的字符 */ var words sdfghjkfastgbyhnvdstyaujskgfdfhlaa;      //創建字符串 var word,                          //單個字符length;                          //該字符的長度 //…

windows下查看靜態庫和動態庫的導出函數

在window下查看動態庫的導出函數可以用vs自帶的Depends工具&#xff1b; 查看靜態庫的信息要用命令行來實現&#xff1a; dumpbin /LINKERMEMBER Test.lib > 1.txt 上面的功能是將靜態庫的信息導出保存在1.txt文件中&#xff0c;這樣就可以在1.txt文件中查看相關的信…

linux ll 文件大小單位_該如何改善 Linux 系統性能?

系統性能一直是一個受關注的話題&#xff0c;如何通過最簡單的設置來實現最有效的性能調優&#xff0c;如何在有限資源的條件下保證程序的運作&#xff0c;ulimit 是我們在處理這些問題時&#xff0c;經常使用的一種簡單手段。ulimit 是一種 linux 系統的內鍵功能&#xff0c;它…

深入Javascript中apply、call、bind

最近在看一下node package的源碼&#xff0c;發現很多里面都包含了function這個對象的apply、call、bind這三個方法&#xff0c;于是想拿出來再看看。。 apply、call 在 javascript 中&#xff0c;call 和 apply 都是為了改變某個函數運行時的上下文&#xff08;context&#x…

優秀案例!教您如何設計現代簡約風格網頁

我們看到越來越多的設計師開始擁抱簡約的網站設計方法&#xff0c;消除網站不必要的元素&#xff0c;保留真正重要的內容&#xff0c;干凈、直觀的設計&#xff0c;就像今天的我們將展示的這些網站。 下面是一組不同風格的簡約設計的網站例子&#xff0c;美麗的導航、整潔的菜單…

怎么清理mysql的死鏈接_什么是死鏈接?如何正確處理死鏈接

什么是死鏈接&#xff1f;我們應該如何正確處理死鏈接呢&#xff1f;小剛SEO為你解答。什么是死鏈接&#xff1f;因鏈接更改或搜索引擎所收錄的網站路徑被刪除了&#xff0c;形成沒法打開的死鏈接。死鏈接的危害&#xff1a;1.死鏈數據過多時&#xff0c;對網站訪問體驗和用戶轉…

數據分頁和使用存儲過程的數據分頁

--使用存儲過程的數據分頁 --pageSize 一頁有多少條 --pageIndex 第幾頁 --totalCount 總共有多少條 --分頁的第一種方法 select top(10) * from Ams_Area where ar_id not in ( Select top(0) ar_id from Ams_Area order by ar_id ) order by ar_id --分頁的第二種方…

mysql generaton_Mysql 集成隨機唯一id mysql unique number generation

一句代碼&#xff1a;SELECT FLOOR(10000 RAND() * 89999) AS random_numberFROM table1WHERE "random_number" NOT IN (SELECT unique_id FROM table2)LIMIT 1隨機生成5位數字&#xff0c;并且不重復。上面的代碼真是給人無限的聯想力。例如&#xff1a;function g…

NavMeshAgent 動態加載障礙物

如果你想讓游戲人物繞開一些物體, 這些物體動態生成出來的.只需要給物體添加NavMeshObstacle組件即可 1. 綠色方塊添加NavMeshObstacle組件 2. 紅色方塊沒有添加NavMeshObstacle組件,被小球穿透了%>_<% 轉載于:https://www.cnblogs.com/plateFace/p/4385629.html

多任務 schedule python_Python3.6 Schedule 模塊定時任務 (實例講解)

Python3.6 Schedule 模塊定時任務 (實例講解)Python 是一種面向對象解釋型計算機程序設計語言, 由 Guido van Rossum 于 1989 年底發明, 第一個公開發行版發行于 1991 年 Python 語法簡潔而清晰, 具有豐富和強大的類庫它常被昵稱為膠水語言, 它能夠把用其他語言制作的各種模塊 …

UVa 11468 (AC自動機 概率DP) Substring

將K個模板串構成一個AC自動機&#xff0c;那些能匹配到的單詞節點都稱之為禁止節點。 然后問題就變成了在Tire樹上走L步且不經過禁止節點的概率。 根據全概率公式用記憶化搜索求解。 1 #include <cstdio>2 #include <cstring>3 #include <queue>4 using name…

mysql 檢查點_my05_mysql檢查點簡述

簡單描述一下mysql 檢查點&#xff0c;對mysql數據庫恢復的理解有所幫助。數據庫版本mysql> selectversion();-----------| version() |-----------| 8.0.11 |-----------1 row in set (0.00 sec)檢查點查看mysql>show engine innodb status\G;---LOG---Log sequence num…

VS2010無法執行自動化測試解決方案

在實際的工作過程中&#xff0c;當你發現你的VS2010無法執行自動化測試用例&#xff0c;剛好你發現你的電腦安裝有VS2012&#xff0c;那么好了&#xff0c;請卸載你的VS2012再試試...轉載于:https://www.cnblogs.com/captainR/p/3566751.html

停止Hadoop或HBase集群的腳本

#!/bin/sh #echo "waring" #read NAME #等待用戶輸入并把輸入的值付給NAME NAME$1 #將腳本第一個參數賦給NAME #引用變量時加上"{}",是個好習慣,利于shell辨別變量邊界 if [ -z ${NAME} ] ; then #執行腳本沒有輸入參數,默認關閉hadoopstop-all.sh elif [ …