CSS 選択パラメーターの W3Schools リファレンスが気に入っています: http://www.w3schools.com/cssref/css_selectors.asp
コードについては...少なくともデバッグ中は、これをいくつかのステップに分割することをお勧めします。br.find_by_css('css_string') を呼び出すと、要素のリストが返されます。したがって、そのリストを取得してカウントを確認できます。
elems = br.find_by_css('div#edit-field-download-files-und-0 a.button.launcher')
if len(elems) == 1:
elems.first.click()
返されたリストの長さをチェックせず、空のリストで '.first' を呼び出すと、例外が発生します。len > 1 の場合、予期しない結果が得られる可能性があります。
ページ上の各 ID は一意であり、デイジー チェーン検索が可能なため、いくつかの異なるステートメントを使用してこれを実現できます。
id_elems = br.find_by_id('edit-field-download-files-und-0')
if id_elems:
id_elem = id_elems.first
a_elems = id_elem.find_by_tag("a")
for e in a_elems:
if e.has_class("button launcher"):
print('Found it!')
e.click()
もちろん、これはこれを行う多くの方法の 1 つにすぎません。最後に、Splinter は Selenium やその他の Web ドライバーのラッパーです。クリックする要素を見つけた後でも、実際のクリックでは何も起こらない可能性があります。これが発生した場合は、e._element として利用可能な、ラップされた Selenium オブジェクトをクリックすることもできます。したがって、必要に応じて e._element.click() を試すことができます。