2017-01-13 25 views
0

私は学習のためにfbを削っています。同じクラス名(セレンのpython)から複数のボタンを取得

次の行を記述していますが、ページ上のボタンを見つけることができません。 (HREFが異なるFBの記事ごとに異なるだろうので、私はHREFを使用したくない)

likeButton = driver.wait.until(EC.presence_of_element_located(
      (By.CLASS_NAME, "_2e4w nowrap"))) 
likeButton[0].click #this code is never reached 

と私も、私はあなたがHTMLをスクラップしていると仮定してい

likeButton = driver.wait.until(EC.presence_of_element_located(
      (By.CSS_SELECTOR, "._2e4w.nowrap"))) 

答えて

0

これを試してみましたそれが本当でない場合は教えてください。

HTMLのクラス名は、固有のものではありません。 HTMLの複数のオブジェクトは同じクラス名を持つことができますが、一般的に複数のものは同じidを持ちません。 idは一般にユニークです。

<thing id="some_id"></thing> 

代わりの

<thing class="some_class"></thing> 

私は、検索を絞り込むし、その後id秒で選択したクラスを使用します。

は、クラスを選択し、CSSセレクタがある場合にも、彼らはこのような何かを見て:彼らはid年代に基づいている場合

.some_class { 
    //some css 
    color: example_color; 
} 

彼らはこの

#some_id { 
    //some css 
    color: example_color; 
} 

EDITのようなものを見て:

私はまた、それが単一のクラス名を探していると推測しています。

likeButton = driver.wait.until(EC.presence_of_element_located(
      (By.CLASS_NAME, "_2e4w"))) 

あなたにもnowrapをしたい場合は、複数のクラス名を選択する方法はおそらくあります:私はまた、のような何かをしようとするだろう。私は_2e4w.nowrapが動作するとは思わないでしょう。

+0

はい、これを使用する必要がありますHTMLファイルです。 問題は、 "クラス名" – HassanK

+0

を介してボタンを検出できないということです。あなたが 'pprint(likeButton)'を実行するとどうなりますか?オブジェクトは「なし」ですか? – 1N5818

+0

それは決してその部分に達しません。コードは、類似のボタンが表示されるのを待っているからです。 – HassanK

0

文字列の入力が「_2e4w」ではない「_2e4w NOWRAP」これらのボタンのリストを取得するために2つの別々のクラス

ある「にあるすべての要素の存在」である必要があります

likeButton = driver.wait.until(EC.presence_of_all_elements_located(
     (By.CLASS_NAME, "_2e4w"))) 
関連する問題