selenium定位失敗記錄

2022-05-09 02:18:09 字數 2123 閱讀 5714

selenium webdriver定位不到元素的五種原因及解決辦法

1.動態id定位不到元素

for example:

//webelement xiexin_element = driver.findelement(by.id("_mail_component_82_82"));

webelement xiexin_element = driver.findelement(by.xpath("//span[contains(.,'寫  信')]"));

xiexin_element.click();

上面一段**注釋掉的部分為通過id定位element的,但是此id「_mail_component_82_82」後面的數字會隨著你每次登陸而變化,此時就無法通過id準確定位到element。

所以推薦使用xpath的相對路徑方法查詢到該元素。

2.iframe原因定位不到元素

由於需要定位的元素在某乙個frame裡邊,所以有時通過單獨的id/name/xpath還是定位不到此元素

密碼重置

原本可以通過

webelement element = driver.findelement(by.linktext("密碼重置"));

來定位此元素,但是由於該元素在iframe id="left_frame"這個frame裡邊  所以需要先通過定位frame然後再定位frame裡邊的某乙個元素的方法定位此元素

webelement element =driver.switchto().frame("left_frame").findelement(by.linktext("密碼重置"));

3.不在同乙個frame裡邊查詢元素

大家可能會遇到頁面左邊一欄屬於left_frame,右側屬於right_frame的情況,此時如果當前處在

left_frame,就無法通過id定位到right_frame的元素。此時需要通過以下語句切換到預設的content

driver.switchto().defaultcontent();

例如當前所在的frame為left_frame

webelement xiaoshoumingxi_element = driver.switchto().frame("left_frame").findelement(by.linktext("銷售明細"));

xiaoshoumingxi_element.click();

需要切換到right_frame

driver.switchto().defaultcontent();

select quanzhong_select2 = new select(driver.switchto().frame("right_frame").findelement(by.id("coupon_type_str")));

quanzhong_select2.selectbyvisibletext("售後0小時");

4.  xpath描述錯誤

這個是因為在描述路徑的時候沒有按照xpath的規則來寫 造成找不到元素的情況出現

5.點選速度過快  頁面沒有載入出來就需要點選頁面上的元素

這個需要增加一定等待時間,顯示等待時間可以通過webdriverwait 和util來實現

例如:webdriverwait wait = (new webdriverwait(driver,10));

wait.until(new expectedcondition()

});也可以自己預估時間通過thread.sleep(5000);//等待5秒 這個是強制執行緒休息

6.firefox安全性強,不允許跨域呼叫出現報錯

錯誤描述:uncaught exception: [exception... "component returned failure code: 0x80004005 (ns_error_failure) [nsidomnshtmldocument.execcommand]" nsresult: "0x80004005 (ns_error_failure)" location:

解決辦法:

這是因為firefox安全性強,不允許跨域呼叫。

firefox 要取消xmlhttprequest的跨域限制的話,第一

第二就是在open的**函式前加入類似如下的**: try catch (e)

Selenium 元素定位

ui自動化中元素的定位是最最基本,但也是最讓人頭痛的地方。控制項的動態載入,屬性的動態生成抑或因為開發的懶而造成控制項的識別問題總是自動化測試的噩夢。webdriver作為主流的網頁測試工具提供了非常豐富的識別控制項的方法。這次在寫自動化庫的時候也遇到各種定位問題,著實抓狂了一陣,但最終都解決了。雖...

selenium定位大全

寫在之前 關於使用優先順序 p0 selenium自帶的基礎定位 p1 css定位 p2 xpath定位 遍歷dom樹。生成xml檔案,再去匹配xpath p3 js定位 xpath 路徑選擇器 定位根據的是路徑來定位,位置是唯一確定的 css 樣式選擇器 是根據元素的樣式定位的相對來說 xpath...

selenium元素定位

單數形式 複數形式,返回的是乙個列表 使用範圍 a.元素有id屬性 b.id不是動態的,為固定值 driver.find element by id id屬性值 使用範圍 a.元素有id屬性 b.id不是動態的,為固定值 語法 driver.find element by name name屬性值 ...