亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Selenium 無法定位 iframe 元素

Selenium 無法定位 iframe 元素

青春有我 2023-06-21 15:44:56
我想在 iframe 中找到輸入元素,但是 selenium 無法找到它。我使用了 和switchTo().frame(id),switchTo().frame(index)但都不起作用。這是我的代碼:driver.switchTo().defaultContent(); WebElement?ele?=?driver.findElement(By.xpath("http://iframe[contains(id,?'braintree-hosted-field-number')]")); driver.switchTo().frame(ele);錯誤信息:沒有這樣的元素:無法定位元素:{"method":"xpath","selector":"http://iframe[contains(id, 'braintree-hosted-field-number')]"}(會話信息:chrome= 76.0.3809.132)
查看完整描述

4 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

嘗試WebDriverWait與 一起使用frameToBeAvailableAndSwitchToIt,如下所示:

new WebDriverWait(driver, 20).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.id("braintree-hosted-field-number")));

導入后:

import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.support.ui.ExpectedConditions;


查看完整回答
反對 回復 2023-06-21
?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

在 iframe 中,我們可以使用 name、id 或 index 進行切換

driver.switchTo().frame("name or ID");    
driver.switchTo().frame(index);

一幀-直接切換到該幀(用上面的代碼)

多幀- 切換到確切的幀

嵌套框架- 切換到父框架(父框架),然后切換到子框架(內框架

driver.switchTo().frame("parent frame");
driver.switchTo().frame("child frame");

切換到帶 ID 或名稱的框架如果您只有一個 iframe,則直接切換到框架,否則切換到父框架,然后指向子框架。

driver.switchTo().frame("braintree-hosted-field-number");

切換到帶有索引的框架查看您的 html,看起來好像有一個 iframe,然后索引以“ 0 ”開頭。 示例:如果您有 5 個 iframe,則索引將為 0 1 2 3 4

driver.switchTo().frame(0);


查看完整回答
反對 回復 2023-06-21
?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

看來你很親密。要切換到所需的,<iframe>您需要:

  • 所需frameToBeAvailableAndSwitchToIt().

  • 您可以使用以下任一定位器策略:

    • css選擇器

      new?WebDriverWait(driver,?20).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("http://iframe[@id='braintree-hosted-field-number'?and?contains(@src,?'hosted-fields-frame')]")));
    • 路徑

      new?WebDriverWait(driver,?20).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector("iframe#braintree-hosted-field-number[src*='hosted-fields-frame']")));
查看完整回答
反對 回復 2023-06-21
?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

您可以委托此手動 iframe 切換并僅搜索您需要的元素。

SearchByFrames?searchInFrame?=?searchFactory.search(()?->?driver.findElement(By.tagName("body")));
Optional<WebElement>?elem?=?searchInFrame.getElem();

它會在所有可用的 iframe 中尋找您的元素,它運行穩定且快速。


查看完整回答
反對 回復 2023-06-21
  • 4 回答
  • 0 關注
  • 352 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號