4 回答

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
嘗試WebDriverWait
與 一起使用frameToBeAvailableAndSwitchToIt
,如下所示:
new WebDriverWait(driver, 20).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.id("braintree-hosted-field-number")));
導(dǎo)入后:
import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.support.ui.ExpectedConditions;

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊
在 iframe 中,我們可以使用 name、id 或 index 進(jìn)行切換
driver.switchTo().frame("name or ID"); driver.switchTo().frame(index);
一幀-直接切換到該幀(用上面的代碼)
多幀- 切換到確切的幀
嵌套框架- 切換到父框架(父框架),然后切換到子框架(內(nèi)框架)
driver.switchTo().frame("parent frame"); driver.switchTo().frame("child frame");
切換到帶 ID 或名稱的框架如果您只有一個(gè) iframe,則直接切換到框架,否則切換到父框架,然后指向子框架。
driver.switchTo().frame("braintree-hosted-field-number");
切換到帶有索引的框架查看您的 html,看起來好像有一個(gè) iframe,然后索引以“ 0 ”開頭。 示例:如果您有 5 個(gè) iframe,則索引將為 0 1 2 3 4
driver.switchTo().frame(0);

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
看來你很親密。要切換到所需的,<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']")));

TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以委托此手動(dòng) iframe 切換并僅搜索您需要的元素。
SearchByFrames?searchInFrame?=?searchFactory.search(()?->?driver.findElement(By.tagName("body"))); Optional<WebElement>?elem?=?searchInFrame.getElem();
它會(huì)在所有可用的 iframe 中尋找您的元素,它運(yùn)行穩(wěn)定且快速。
添加回答
舉報(bào)