2017-11-16 5 views
0

f3に切り替えるには? here図のf3に切り替える方法(Selenium + Python)

現在のフレームを知るには?以下のコマンドの

なしに動作しません:

driver.switch_to.frame('f3') 
driver.switch_to.frame(driver.find_element_by_xpath("//frameset[@name='viewfrm']")) 
driver.switch_to.frame(driver.find_element_by_xpath("//frameset[@name='f3']")) 
+0

可能な複製(https://stackoverflow.com/questions/47299851/how-to-extract-the-two-elements-in- [セレン(パイソン)?2つの要素を抽出する方法] seleniumpython) – DebanjanB

+1

上記のコードを試したときに発生するエラーは何ですか? –

+0

この質問は、**複数の問題**については何も言及していません**別個の質問**。例えば'1')フレームに切り替えるには? '2')いくつかのフレームの関係を導入する。 '3')f3に切り替えるには? '4')現在のフレームを知るには? '5')(なぜ)以下のコマンドは動作しませんか? 。 – DebanjanB

答えて

0

は、次のコードを試してみてください。

driver.switch_to.frame(driver.find_element_by_name("f3")) 
+0

@questionhangは別のフレームにありますか? – w33haa

+0

ウェブページはjavascriptで生成されていますが、これはページの現在のコードではありません – w33haa

+0

questionhang、あなたのコメントのコードは全くf3を指していません。上の@Anderssonが正しいトラックにあると思われ、適切な場所のすべてでswitch_to_default_content()を実行する必要があります。 –

0

を次のコードにしてみてください:

driver.switch_to_default_content() 
driver.switch_to_frame("f3") 
+0

彼はすでにそれを試しました – w33haa

+0

@questionhang、私は答えを更新しました。 –

+0

f3がメニュー – w33haa

2

必要frame表示されるまで待つようにしてください:

from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it("f3")) 

+0

f3 "'に切り替える前に他のフレームに切り替えましたか? – Andersson

+0

この場合、 '' f3 "'に切り替えるには 'driver.switch_to_default_content()'と '' menu ""フレームから戻ってくる必要があります。 – Andersson

+0

@Anderson違いはありません。私は自分の投稿を改訂し、コードが添付されました。 – questionhang

0

あなたが同じようにフレーム「メニュー」で扱うことができdriver.switch_to_default_content()後と「toogle」あなたはフレームに得ればあなたの質問は、あなたがやろうとしているものは言及しませんが、このコードは動作しています。これは、あなたのコードがやや異なったやり方で行いますが、結果の表から最後の列を出力します。

driver.get("newsmth.net/frames.html") 
driver.switch_to_frame("menu") 
input = driver.find_element_by_css_selector("input[name='board']") 
input.clear() 
input.send_keys("foodinfo\n") 
driver.switch_to_default_content() 
driver.switch_to_frame("f3") 
rows = driver.find_elements_by_xpath("//table[@class='main wide']//tr/td[5]") 
for row in rows 
    print row.text 
+0

はい...あなたはそれを試して何が起こったのですか? – JeffC

関連する問題