selenium-webdriver
스위칭 프레임
수색…
통사론
- 자바
- driver.switchTo (). frame (문자열 이름);
- driver.switchTo (). frame (String id);
- driver.switchTo (). frame (int index);
- driver.switchTo (). frame (WebElement frameElement);
- driver.switchTo (). defaultContent ();
- 기음#
- driver.SwitchTo (). Frame (int frameIndex);
- driver.SwitchTo (). Frame (IWebElement frameElement);
- driver.SwitchTo (). Frame (string frameName);
- driver.SwitchTo (). DefaultContent ();
- 파이썬
- driver.switch_to_frame (nameOrId)
- driver.switch_to.frame (nameOrId)
- driver.switch_to_frame (index)
- driver.switch_to.frame (index)
- driver.switch_to_frame (frameElement)
- driver.switch_to.frame (frameElement)
- driver.switch_to_default_content ()
- driver.switch_to.default_content ()
- 자바 스크립트
- driver.switchTo (). frame (nameOrId)
- driver.switchTo (). frame (index)
- driver.switchTo (). defaultContent ()
매개 변수
매개 변수 | 세부 |
---|---|
nameOrId | 이름이 id 인 프레임을 선택하십시오. |
색인 | 0부터 시작하는 인덱스로 프레임을 선택하십시오. |
frameElement | 이전에 위치한 WebElement를 사용하여 프레임을 선택하십시오. |
Java를 사용하여 프레임으로 전환하려면
인스턴스의 경우 HTML 뷰 또는 요소의 HTML 소스 코드가 다음과 같이 iframe으로 래핑됩니다.
<iframe src="../images/eightball.gif" name="imgboxName" id="imgboxId">
<p>iframes example</p>
<a href="../images/redball.gif" target="imgbox">Red Ball</a>
</iframe><br />
... iframe의 웹 요소에서 액션을 수행하려면 먼저 아래 방법 중 하나를 사용하여 포커스를 iframe으로 전환해야합니다.
프레임 ID 사용 (iframe의 ID를 알고있는 경우에만 사용해야 함)
driver.switchTo().frame("imgboxId"); //imgboxId - Id of the frame
프레임 이름 사용 (iframe의 이름을 아는 경우에만 사용해야합니다).
driver.switchTo().frame("imgboxName"); //imgboxName - Name of the frame
프레임 인덱스 사용 (if 또는 iframe의 이름이없는 경우에만 사용해야 함). 여기서 인덱스는 모든 프레임 중에서 iframe의 위치를 정의합니다.
driver.switchTo().frame(0); //0 - Index of the frame
참고 : 페이지에 세 개의 프레임이있는 경우 첫 번째 프레임은 인덱스 0에, 두 번째 프레임은 인덱스 1에, 세 번째 프레임은 인덱스 2에 있습니다.
이전에 위치한 webelement를 사용하십시오 (이미 프레임을 찾은 다음 WebElement
로 반환 한 경우에만 사용해야합니다).
driver.switchTo().frame(frameElement); //frameElement - webelement that is the frame
그래서 Red Ball
앵커를 클릭하십시오 :
driver.switchTo().frame("imgboxId");
driver.findElement(By.linkText("Red Ball")).Click();
Java를 사용하여 프레임을 벗어나려면
주 문서 또는 페이지의 첫 번째 프레임으로 포커스를 전환합니다. 아래 구문을 사용해야합니다.
driver.switchTo().defaultContent();
C #을 사용하여 프레임으로 전환
1. 색인으로 프레임으로 전환하십시오.
여기서 색인 1로 전환합니다. 색인은 페이지의 프레임 순서를 나타냅니다. 이것은 프레임 ID 나 이름이 훨씬 더 신뢰할 수있는 최후의 수단으로 사용해야합니다.
driver.SwitchTo().Frame(1);
2. 이름으로 프레임으로 전환하십시오.
driver.SwitchTo().Frame("Name_Of_Frame");
3. IWebElement를 전달하여 제목, ID 또는 다른 항목별로 프레임으로 전환합니다.
ID 또는 제목으로 프레임으로 전환하려면 웹 요소를 매개 변수로 전달해야합니다.
driver.SwitchTo().Frame(driver.FindElement(By.Id("ID_OF_FRAME")));
driver.SwitchTo().Frame(driver.FindElement(By.CssSelector("iframe[title='Title_of_Frame']")));
또한 프레임이 나타날 때까지 몇 초가 걸리는 경우 기다려야 할 수도 있습니다.
new WebDriverWait(driver, TimeSpan.FromSeconds(10))
.Until(ExpectedConditions.ElementIsVisible(By.Id("Id_Of_Frame")));
프레임 벗어남 :
driver.SwitchTo().DefaultContent()
C #를 사용하여 프레임을 벗어나려면
주 문서 또는 페이지의 첫 번째 프레임으로 포커스를 전환합니다. 아래 구문을 사용해야합니다.
webDriver.SwitchTo (). DefaultContent ();
상위 프레임의 하위 프레임 간을 전환합니다.
상위 프레임 (프레임 - 상위)이 있다고 가정합니다. 및 2 개의 하위 프레임 (Frame_Son, Frame_Daughter). 다양한 조건과 처리 방법을 볼 수 있습니다.
1. 부모로부터 아들 또는 딸에게 :
driver.switchTo().frame("Frame_Son");
driver.switchTo().frame("Frame_Daughter");
2.Phone에서 Parent로 : 부모가 기본 프레임 인 경우 기본 프레임으로 전환하고, 그렇지 않으면 기본 프레임 전환에서 상위 프레임으로 전환합니다. 그러나 당신은 아들에서 부모로 직접 전환 할 수 없습니다.
driver.switchTo().defaultContent();
driver.switchTo().frame("Frame_Parent");
3. 아들에서 딸까지 : 언니가 실수를 저 지르지 않으면 그녀에게 소리 지르지 말고 그냥 부모님에게 연락하십시오. 마찬가지로 부모 프레임과 자식 프레임에 제어권을 부여합니다.
driver.switchTo().defaultContent();
driver.switchTo().frame("Frame_Parent");
driver.switchTo().frame("Frame_Daughter");
프레임이로드 될 때까지 기다립니다.
꽤 많은 경우에 프레임이 즉시 나타나지 않을 수 있으며 스위치가로드 될 때까지 기다려야 할 것입니다. 그렇지 않으면 NoSuchFrameException이 발생합니다.
따라서 전환하기 전에 항상 기다리는 것이 좋습니다. 다음은 프레임이로드 될 때까지 기다리는 이상적인 방법입니다.
try{
new WebDriverWait(driver, 300).ignoring(StaleElementReferenceException.class).
ignoring(WebDriverException.class).
until(ExpectedConditions.visibilityOf((driver.findElement(By.id("cpmInteractionDivFrame"))));}
catch{
// 프레임이 대기 시간 300 초 내에 표시되지 않는 경우에만 예외를 발생시킵니다.}