web-dev-qa-db-ja.com

Python、セレンでフレームを切り替えるための関数

2つのフレームを簡単に切り替えられる機能を探しています。現在、フレームを切り替える必要があるたびに、次のコードでこれを実行しています。

driver.switch_to.frame(driver.find_element_by_css_selector("frame[name='nav']"))

driver.switch_to.frame(driver.find_element_by_css_selector("frame[name='content']"))

私の目標は、navまたはコンテンツを変更するためだけに引数を取る関数を取得することです。残りは基本的に同じです。

私がすでに試したことは:

def frame_switch(content_or_nav):
x = str(frame[name=str(content_or_nav)] #"frame[name='content_or_nav']"
driver.switch_to.frame(driver.find_element_by_css_selector(x))

しかし、それは私にエラーを与えます

 x = str(frame[name=str(content_or_nav)]
                  ^

SyntaxError:無効な構文

14
Andigger

これが書かれている方法は、CSSコードをPythonコードとして解析しようとしています。あなたはそれを望んでいません。

この関数は適切です:

def frame_switch(css_selector):
  driver.switch_to.frame(driver.find_element_by_css_selector(css_selector))

name属性に基づいてフレームに切り替えようとしている場合は、これを使用できます。

def frame_switch(name):
  driver.switch_to.frame(driver.find_element_by_name(name))

メインウィンドウに戻るには、次を使用できます。

driver.switch_to.default_content()
35
ddavison