したがって、セレンを使用してフレームを選択しようとしています。私はこれに関するstackoverflowに関する多くの例と同様の質問を見つけました。セレンを使用してフレームを選択
フレーム内にある要素を選択するには、最初にそのフレームに移動してから、必要な要素を取得する必要があると指摘しました。 しかし私は、私が望むフレームを得ることができないようです。
私が読んですべてのポストを使用することを言った:
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 wait =新しいWebDriverWait(ドライバ、15); wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector( ""))); '' ' –