1

find_by_cssメソッドを使用して Splinter スクリプトでボタンを選択するのに問題があります。ドキュメントはせいぜいまばらで、例を示した優れた記事はあまり見つかりません。

br.find_by_css('div#edit-field-download-files-und-0 a.button.launcher').first.click()

...brブラウザ インスタンスはどこにありますか。

書き方もいろいろ試してみました。ドキュメントには構文の難しい例が記載されていないため、どうすればよいか本当にわかりません。

これが要素のスクリーンショットです。

これは、操作しようとしている要素のスクリーンショットです

申し訳ありませんが、スクリーンショットはひどいものです。

誰もこれについて経験がありますか?

4

3 に答える 3

3

cssセレクターは問題ないように見えますがfind_by_css、メソッドとしてどこから入手したのかわからないだけですか?

これはどう :-

br.find_element_by_css_selector("div#edit-field-download-files-und-0 a.button.launcher").click()

Selenium は、ページ内の要素を見つけるために次のメソッドを提供します。

find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector

複数の要素を検索するには (これらのメソッドはリストを返します):

find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector
于 2014-03-04T21:46:36.463 に答える
1

私は、ウェブページ上のものをクリックしようとしているようなものに取り組んでいます。find_by_css()のドキュメントは非常に貧弱で、クリックしたい要素への css パスを入力する必要があります。 python.org の about ページをクリックしたいとします。 python.org の about タブに行きたいとします。

from splinter import Browser
from time import sleep
with Browser() as browser: #<--Create browser instance (firefox default driver)
    browser.visit('http://www.python.org') #<--Visits url string
    browser.find_by_css('#about > a').click()
    #                       ^--Put css path here in quotes
    sleep(5)

接続が良好な場合、[about] タブがクリックされているのを確認できない可能性がありますが、[about] ページが表示されるはずです。

難しい部分は、要素への css パスを把握することです。ただし、一度取得すると、find_by_css()方法は非常に簡単に見えます

于 2014-12-16T01:53:46.250 に答える
0

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() を試すことができます。

于 2015-02-05T04:43:50.763 に答える