![](/img/trans.png)
[英]How to find elements in a drop-down menu wrapped inside <li>, <a> and >ul> tags in Selenium Webdriver using Java
[英]Find elements inside forms and iframe using Java and Selenium WebDriver
我正在嘗試訪問<form> <iFrame> <form> elements </form> </iFrame> </form>
下存在的元素。
你能幫我訪問這些“元素”嗎,我正在使用 Selenium Webdriver 和 JAVA?
遇到的問題:能夠到達目標頁面(存在上述元素的地方),但我的代碼無法識別這些元素。
XML結構概述:
<body>
<form action="https://abcd/efgh/" name="outerForm" method="post" target="iFrameTitle">
<iframe width="700" height="600" src="" title="Frame for Java Test" name="iFrameTitle" scrolling="auto" frameborder="0">
<form id="innerFormID" name="innerForm" action="/xxx/xxxx/yyyy/zzzz/" method="post" autocomplete="off">
<fieldset id="ncDetailsInner">
<div id="element1">
<label for="label1">
<abbr title="Required field">*</abbr></label>
<input name="label2" type="text" maxlength="30" id="cardHolder" value="" >
</div>
<div id="element2">
<label for="label3">Label3 <abbr title="Required field">*</abbr></label>
<div id="element3">
<label for="label4">Label4<abbr title="Required field">*</abbr></label>
<input id="label5" name="labelname5" type="text" maxlength="19" value="">
</div>
<div id="element4">
<label for="label6">Label6</label>
<input id="label7" name="labelname7" type="text" size="2" maxlength="2" value="" class="text disabled" disabled="">
</div>
</div>
</fieldset>
</form>
</iframe>
</form>
</body>
代碼摘錄:
WebDriverWait wait_iframe = new WebDriverWait(driver, 20000);
wait_iframe.until(ExpectedConditions.visibilityOfElementLocated((By.id("element2"))));
calling_function(sh1.getCell(col + 10, row).getContents(),
sh1.getCell(col + 11, row).getContents(),
sh1.getCell(col + 12, row).getContents(),
sh1.getCell(col + 14, row).getContents());
public static void called_funciton(String string1, String string2,
String string3, String string4) {
driver.findElement(By.name("Element1 Name")).sendKeys(string1);
driver.findElement(By.id("Element2 ID")).sendKeys(string2);
driver.findElement(By.id("Element3 ID")).sendKeys(string3);
driver.findElement(By.id("Element4 ID")).sendKeys(string4);
driver.findElement(By.name("submitButton")).click();
}
如果需要更多詳細信息,請告訴我!
在嘗試搜索 iframe 中的元素之前,您必須將 Selenium 焦點切換到 iframe。
在搜索 iframe 中的元素之前試試這個:
driver.switchTo().frame(driver.findElement(By.name("iFrameTitle")));
使用 iframe 時,您首先必須切換到 iframe,然后才能選擇該 iframe 的元素
您可以使用:
driver.switchTo().frame(driver.findElement(By.id("frameId")));
//do your stuff
driver.switchTo().defaultContent();
如果您的 frameId 是動態的,並且您只有一個 iframe,則可以使用以下內容:
driver.switchTo().frame(driver.findElement(By.tagName("iframe")));
在Selenium >= 3.41 (C#) 上,正確的語法是:
webDriver = webDriver.SwitchTo().Frame(webDriver.FindElement(By.Name("icontent")));
通過使用https://github.com/nick318/FindElementInFrames您可以在所有框架中找到 webElement:
SearchByFramesFactory searchFactory = new SearchByFramesFactory(driver);
SearchByFrames searchInFrame = searchFactory.search(() -> driver.findElement(By.tagName("body")));
Optional<WebElement> elem = searchInFrame.getElem();
對於 python 用戶:
driver.switch_to.frame(driver.find_element(By.XPATH, "/html/body/div[3]/div[2]/div/div[1]/div[6]/div[2]/div/iframe"))
並且還切換回來:
driver.switch_to.default_content()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.