国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

和我一起學 Selenium WebDriver(3)——基礎篇

2019-11-06 06:40:35
字體:
來源:轉載
供稿:網友
【慎用 findElement】  今天本打算研究一下 異步加載的延遲測試,結果一不留神發現了 findElement 的問題。 不敢說這是個Bug,不排除是自己學藝不精,暫且把問題拋出來,希望大家能給些意見。 1、問題描述: 使用 FirefoxDriver ,用 findElement 去查找頁面上不存在的元素時,會導致程序死在 findElement 上,停滯不前,不會繼續執行后面的代碼即使在 WebDriverWait 的 until 內使用也會導致鎖死,而且 until 內的代碼只會執行一次, timeout 完全失效 此問題在 IE、Chrome 上不會出現,會正常報錯 換成 findElements 后可以正常工作 換成 用 js 方法獲取對象 可以正常工作 2、問題跟蹤 經過對源碼的跟蹤,發現是在 org.openqa.selenium.remote.HttpCommandExecutor 的 PRivate HttpResponse fallBackExecute 方法內 執行 return client.execute(targetHost, httpMethod, context); 后就停滯了...無任何異常拋出 3、測試代碼 package lesson3;import java.util.List;import org.junit.AfterClass;import org.junit.BeforeClass;import org.junit.Test;import org.openqa.selenium.By;import org.openqa.selenium.JavascriptExecutor;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.support.ui.ExpectedCondition;import org.openqa.selenium.support.ui.WebDriverWait;public class ExampleForAjax { static WebDriver driver; @BeforeClass public static void init() { System.out.println("init..."); // 如果你的 FireFox 沒有安裝在默認目錄,那么必須在程序中設置 System.setProperty("webdriver.firefox.bin", "D://Program Files//Mozilla Firefox//firefox.exe"); // 創建一個 FireFox 的瀏覽器實例 driver = new FirefoxDriver(); } @Test public void test() { // 讓瀏覽器訪問 zTree Demo driver.get("http://www.ztree.me/v3/demo/cn/core/standardData.html"); // 等待 zTree 初始化完畢,Timeout 設置10秒 try { (new WebDriverWait(driver, 5, 500)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { //findElement 會導致程序鎖死// WebElement element = driver.findElement(By.id("treeDemo111"));// return element != null; WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('#treeDemo111');"); return element != null; } }); } catch(Exception e) { e.printStackTrace(); } try { //findElement 會導致程序鎖死// WebElement element = driver.findElement(By.id("treeDemo111")); List<WebElement> elementList =(List<WebElement>) driver.findElements(By.id("treeDemo111")); System.out.println(elementList.size()); } catch(Exception e) { e.printStackTrace(); } try { //findElement 會導致程序鎖死// WebElement element = driver.findElement(By.id("treeDemo111")); WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('#treeDemo111');"); } catch(Exception e) { e.printStackTrace(); } } @AfterClass public static void destory() { System.out.println("destory..."); //關閉瀏覽器 driver.quit(); }}總之,目前感覺盡量慎用 findElement 這個方法;利用 findElements 或 js 方法來替換,以避免異常出現。 希望有這方面經驗的朋友多交流一下。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 静乐县| 崇文区| 精河县| 沙坪坝区| 吴川市| 浦东新区| 潮州市| 左贡县| 赣榆县| 荥经县| 万安县| 商南县| 汕尾市| 永顺县| 佛山市| 滕州市| 阳泉市| 藁城市| 长顺县| 兴山县| 梁河县| 武乡县| 阳西县| 台东市| 孙吴县| 华容县| 靖安县| 扶风县| 永登县| 郁南县| 佛山市| 晋江市| 丹东市| 崇信县| 安龙县| 江华| 黄龙县| 廊坊市| 咸丰县| 敦煌市| 安塞县|