を使用した後、私は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()と異なっていますか?
すべきですか? "on"クラスは表示されません... – dyeray
このサイトは動的なWebページなので、クラス名は時々異なるようになりました。上記のXpathを使用することは常に有効であるようです。 –
はい、iframe要素がある場合、フレームに切り替える必要があります。次に、要素を見つけることができるはずです。 – DarthOpto