2017-12-31 47 views
0

で繰り返すアクションの繰り返しのコードを削除し、このCSSセレクタを持っているページ上の4つの要素があるので、私はこれをやっているこのPythonの:セレン私はセレンとPythonで働いています

elem = driver.find_element_by_css_selector('#results .page_block_sub_header_count') 
elem = driver.find_element_by_css_selector('#results .page_block_sub_header_count') 
elem = driver.find_element_by_css_selector('#results .page_block_sub_header_count') 
elem = driver.find_element_by_css_selector('#results .page_block_sub_header_count') 

をしなければなりません」 #results .page_block_sub_header_count "。そして、私は4番目の結果を得たいと思います。

これをコードに入れてもいいですか?私は4つの同様の行が欲しいとは思わない。そして、これは良いコードプラクティスとはみなされないと私は信じています。

+2

方法(find_elements_by_css_selector 'についての)'? (追加の "s"に注意してください!) –

答えて

3

だけロケータに一致する複数の要素を検索する(「s」を注意してください)find_elements_by_css_selector()を使用する - あなたのケースではCSSセレクタ:

results = driver.find_elements_by_css_selector('#results .page_block_sub_header_count') 

resultsWebElementインスタンスのリストだろう、あなたは反復することができますそれを超えると、たとえば、テキストを取得:

for item in results: 
    print(item.text) 
+4

OPはちょうど4番目の(最後の?)ワンを望んでいます。ループする必要はありません。第4回目を参照してください... 'print(results [3] .text)'。 – JeffC

+0

@JeffCええ、良い点。ありがとう。 – alecxe

+1

@alecxe OPは「4番目の結果を得たい」という理由から、私たちはなぜ落ち着かなければならないのですか?find_elements _ **? – DebanjanB

1

また、あなたは、次のコード(念のため)使用することができます。

elements = driver.find_elements_by_css_selector("#results .page_block_sub_header_count") 

for index in range(len(elements)): 
    elements[index].text 

PS:@ alecxeのコードは使い方が良いです。

1

HTMLがないと、最適なソリューションを提供するのが難しいです。どのようにこれまで私はあなたの試してみたコードから見ることができるように、あなたが使用している:

driver.find_element_by_css_selector('#results .page_block_sub_header_count') 

これは、本質的に意味し、idnoderesultsとしてはclasspage_block_sub_header_countなどで少なくとものchildNodesを持っています。だから、ベストフィットcss_selectorを構築するために、我々はHTML DOMで利用できるようになりますクラスpage_block_sub_header_countが含まれていtagNameに関する情報が不足しています。

それでももしあなたが次のコード行を使用することができますwant to get the result of the 4th oneます

elem = driver.find_element_by_css_selector('#results .page_block_sub_header_count:nth-of-type(4)') 
+0

@ user3349993あなたが「第4の結果を得たい」という理由を理解していないのはなぜですか?find_elements _ ** – DebanjanB

関連する問題