2017-07-02 5 views
0

ウェブサイトのページでliの要素を数える必要があります。要素は表示され、枠内には表示されません。ブロック情報を取得する

htmlコードは次のとおりです。

<ul class='uiList _10-2x _6kg'> 
<li class='_10-5x'>...</li> 
<li class=''>...</li> 

終了など

私は次の方法を使用して要素を見つけることを試みた:それは作品

xpath: count=len(browser.find_elements.by_xpath("//ul[@class='uiList _10-2x _6kg']/li")) 

が、私は何も持っていない - [](なしlen)と0を指定して

class_name:

ここでは
browser.find_element_by_class_name("uiList _10-2x _6kg") 
count = browser.find_elements_by_tag_name('li') 
len(count) 

- 李クラスの使用クラス名

を見つけることができませんでした: - :セレクターpermamentされていないと変更[]と同じXpathのよう

css_selectorが

len(browser.find_elements_by_class('_10-5x') 

空の結果ページリフレッシュから。

私は間違っていますか?それともそれ以外の方法がありますか?

+0

あなたはFirefoxやChromeとその意志でブラウザのデバッグモード(プレスF12キーに従って**実際に本当の目的の要素への完全なxpathが**であるかを示すことができますデバッグモードを開始しますか? –

答えて

0

HTMLコードの提供個あたりとして、私はclass="ul class"で何ulを見ていないが、class="uiList _10-2x _6kg"

ulあなたは、正確なクラス名の値を指定しようとすることができます:

len(browser.find_elements_by_css_selector('ul.uiList._10-2x._6kg>li')) 

または部分的なクラス名では:

len(browser.find_elements_by_xpath('//ul[starts-with(@class,"uiList")]/li')) 

また、ターゲットリストはdynamicallあなたには、いくつかのexplicit waitを追加することができますので、yは、:

from selenium.webdriver.support.ui import WebDriverWait as wait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By 

len(wait(browser, 10).until(EC.presence_of_all_elements_located((By.XPATH, '//ul[starts-with(@class,"uiList")]/li')))) 
関連する問題