2016-12-19 13 views
0

を使用した後、私はhttp://ntry.com/#/stats/ladder/round.php、 上の要素を見つけるのですが、私は ind_element_by_css_selectorを含め、いくつかの方法を試した後、それを見つける失敗し続けます。セレンは:ind_element_by_xpath ...というように、NoSuchElementExceptionをさえ明示待ち

私はWebDriverWaitを使用しましたが、失敗しています。問題は何でしょうか?

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

driver = webdriver.Firefox() 
driver.get("http://ntry.com/#/stats/ladder/round.php") 

try: 
    element = EC.presence_of_element_located((By.XPATH, '//div[@id="analysis-table"]/div[1]/div[1]/p[1]/span[1]/strong')) 

    #or element = WebDriverWait(driver, 30).until(
     EC.presence_of_element_located((By.CSS_SELECTOR, "#analysis-table>div.bar_graph>div:nth-child(1)>p.left.on>span.per>strong")) 
    ) 
except: 
    print "HIJUDE" 

driver.quit() 

暗黙の待機を使用しましたが、同じエラーが発生します。 Waitを使用しないと、NoSuchElementExceptionも発生します。

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"xpath","selector":'//div[@id="analysis-table"]/div[1]/div[1]/p[1]/span[1]/strong'} 

ウェブサイトは要素を見つけることができませんか?またはXpathまたはcss_selector以外の方法を使用していますか?なぜこれが起こったのか、私はかなり混乱しています。

-------------編集-------------- divの上位xpathレベルにiframeがあることがわかりました[@id = "分析テーブル"]。私はそれが理由だと思う。この場合、私はいつもdriver.switch_to_frame() を使うべきですか? Btw、driver.switch_to_window()はframe()と異なっていますか?

+0

すべきですか? "on"クラスは表示されません... – dyeray

+0

このサイトは動的なWebページなので、クラス名は時々異なるようになりました。上記のXpathを使用することは常に有効であるようです。 –

+0

はい、iframe要素がある場合、フレームに切り替える必要があります。次に、要素を見つけることができるはずです。 – DarthOpto

答えて

0

パス内のp.left.onに問題があります。 1つの要素は単一クラスleftを持ち、もう1つの要素はrightonのクラスです。それは

"#analysis-table>div.bar_graph>div:nth-child(1)>p.left>span.per>strong" 

またはp.left.onに.onは何

"#analysis-table>div.bar_graph>div:nth-child(1)>p.right.on>span.per>strong" 
+0

あなたの答えをありがとう。理由は、divレベルを上回って