그래서 셀레늄을 사용하여 프레임을 선택하려고합니다. 나는 stackoverflow에 관한 많은 예제와 비슷한 질문을 발견했다.Selenium을 사용하여 프레임 선택
모두 프레임에있는 요소를 선택하려면 먼저 해당 프레임으로 "이동"한 다음 원하는 요소를 가져와야한다고 지적했습니다. 하지만 내가 원하는 프레임을 얻을 수없는 것 같습니다. 내가 읽은
모든 포스트는 말했다 사용 :
driver.switch_to.frame("contentfrm") # Fetch by name, or
driver.switch_to.frame(1) # Fetch by index
그래서, 아무리 내가 항상 프레임을 찾을 수 없습니다라는 오류가 무엇을 사용 selenium.common.exceptions.NoSuchFrameException: Message: Unable to locate frame: contentfrm
을 모두가 시도하지 않고 파이썬 코드 :
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get("http://10.0.0.2/html/content1.asp")
driver.get("10.0.0.2")
elem = driver.find_element_by_name("Username")
elem.send_keys("admin")
elem = driver.find_element_by_name("Password")
elem.send_keys("admin2")
elem.send_keys(Keys.ENTER)
# ----
driver.switch_to.default_content()
driver.switch_to.frame("contentfrm")
# elem = driver.find_element_by_id("m8")
# driver.quit()
HTML 코드 :
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Quick Start</title>
</head>
<frameset onload="load()" rows="0,*" frameborder="0" border="0" framespacing="0">
<frame name="topFrame" scrolling="no" src="../main/refresh.asp" __idm_frm__="200"></frame>
<frame name="contentfrm" id="contentfrm" __idm_frm__="201"></frame>
</frameset>
</html>
참고 : 코드는 프레임을 선택해야하는 위치까지 올바르게 작동합니다.
는 문제가 있지만 몇 가지 가정을 취할 것입니다 무엇을 정확하게하기 어렵다이 문제의 웹 사이트없이
그 프레임에는 콘텐츠가 없습니다. 'topFrame'을 원하지 않으십니까? –
@Rafael 실제로 콘텐츠가 있습니다. 나는 단지 그것을 포함시키지 않았다. 그렇지 않으면 많은 코드가 생길 것이다. 하지만 내가 찾고있는 요소는 해당 프레임에 있습니다. – jovaee
switch 문 앞에 기본 내용을 제거하고 요소를 찾기 전에 대기 시간을 사용하십시오. ''' driver.switch_to.frame ("contentfrm"); WebDriverWait wait = 새 WebDriverWait (드라이버, 15); wait.until (ExpectedConditions.elementToBeClickable (By.cssSelector ("")))); ''' –