所以我試圖選擇一個使用硒的幀。我在這裏找到了很多關於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
的Python代碼:
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等待=新的WebDriverWait(驅動程序,15); wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(「」))); ''' –