2016-06-29 1 views
-1

こんにちは、次のコードを持っている:カウント数(パイソン、セレン)

for each in driver.find_elements_by_xpath(".//*[@id='ip_market" + market + "']/table/tbody") 
    cell = each.find_elements_by_tag_name('td')[0] 
    cell2 = each.find_elements_by_tag_name('td')[1] 
    cell3 = each.find_elements_by_tag_name('td')[2] 

私の問題は、私はS tdはすべてのeach(時には3の内側にあります正確にどのように多くを知らないということです時には15などなど)。

の中のtdの番号を確認して、動的にすることは可能でしょうかfind_elements_by_tag_name('td')

答えて

0

ちょうどインデックス、使用することによって、それらを得ることはありません:

print(len(cells)) 

またはスライス:

cells = each.find_elements_by_tag_name('td') 

その後cellsは、あなたが上len()を呼び出すことができる要素のリストになります

cells[:3] # gives first 3 elements cell1, cell2, cell3 = cells[:3] # unpacking into separate variables 

または、すべてのセルのテキスト:

[cell.text for cell in cells] 
+0

感謝をやろうとしているものであるように、それが見えます! :)私の問題は、私は正しく私のSQLデータベースにデータを挿入するためにインデックスが必要です、そうでなければ私はそれらを挿入する方法を知らない...申し訳ありませんが、私はPythonとSQLの新...しかし、あなたは私がそれを聞いてうれしいより良い解決策を持っていますか? :D – Lord

+0

@Lord申し訳ありませんが、何をしようとしているのか不明です。これまでのコードをさらに追加して、最終目標についていくつかの詳細を追加できますか?ありがとう。 – alecxe

0

find_elements_by_tag_nameリストを返します。そのリストにlen()を使用して、そのタグ名で要素数を取得します。また、for eachというよりも、わかりやすい課題を丁寧に提案しています。

table = driver.find_element_by_xpath(".//*[@id='ip_market" + market + "']/table/tbody") 
table_rows = table.find_elements_by_tag_name("tr") 
for row in table_rows: 
    row_cells = row.find_elements_by_tag_name("td") 
    num_of_cells = len(row_cells) 
0

あなたのコメントを読んでから、これはあなたが...あなたの答えのための

for each in driver.find_elements_by_xpath(".//*[@id='ip_market" + market + "']/table/tbody") 
    for i in range(0,len(each.find_elements_by_tag_name('td')) 
     // you can now use i as an index into the loop through the TDs 
     print "do something interesting with i: " + i