EDIT:これは問題自体を解決したとして受け入れられました。Python Selenium - ElementNotVisibleException
私は実際に私がElementNotVisibleExceptionエラーを得る非常に最後の行にデータに興味を持っていないですかセレン作品(理解するために、次のWebページlink からデータをつかむしようとしています。次のように私のコードが見えます:
path = mypath
url = 'http://www.bundesliga.de/de/liga/statistik/spieltag/'
#### SCRIPT TO TEST SELENIUM
#### (0) Load driver
driver = webdriver.PhantomJS(path)
driver.set_window_size(1120, 550)
driver.get(url)
#### (1) Define XPATHs
XPATH_MATCHDAY = '//*[contains(@class, "has-data")]'
XPATH_GAMES = "//*[contains(text(), 'mehr zum Spiel')]"
XPATH_TEAMSTATS = "//span[contains(text(), 'Teamstatistik')]"
### (2) Click links to Teamstats
# Select Matchday 1
matchday = driver.find_elements_by_xpath(XPATH_MATCHDAY)[0]
matchday.click()
# Select game one
game = driver.find_elements_by_xpath(XPATH_GAMES)[0]
game.click()
# Select teamstats tab (bottom of page)
teamstats = driver.find_elements_by_xpath(XPATH_TEAMSTATS)[0]
time.sleep(.5)
teamstats.click()
何のコードが行うことになっている:
- クリックして "1" 上の表の "Spieltagsübersicht"
- 最初の試合では "mehr zum Spiel"をクリックしてください
- ページの後半にある "Teamstatistik"タブをクリックしてください。
ただし、Teamstatistikタブは表示されていますが、エラーが表示されます。
私はstackoverflowでかなり集中的にこのエラーについて読んでおり、最後の行については次の回避策も試しました。しかし、私はTimeoutExceptionを取得します。
teamstats = WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,"XPATH_TEAMSTATS")))
teamstats.click()
私はPhantomJSとChromeの両方でこれを試しましたが、これを修正できませんでした。私がクリックしようとしているタブ "Teamstatistik"が常に私に見えるので、私はちょっと困惑しています。これさえ可能です。(今私は.is_displayedしようと、私はFALSE取得EDIT)しかし、どのように私はそれが表示され得るか)
?teamstats.is_visibleが利用可能である「場合、私は試してみました。しかし、それはないです が。。。?このため、私はセレンがある代替案を検討し、ウェブサイトのこの種のために最良の選択である場合、コード- 上の任意のアドバイスを感謝/どのようになります
BeautifulSoup
ご協力いただきありがとうございます。これは実際に私の最初の投稿です。
teamstats = driver.find_elements_by_xpath(XPATH_TEAMSTATS)[0]
time.sleep(.5)
driver.execute_script('arguments[0].scrollIntoView()', teamstats)
teamstats.click()
あなたはまた、下にページをスクロールするには、この簡単な方法を試すことができますので、ページの見えない部分に位置する標的要素として
迅速な返信をありがとう。私はこの投稿を見ましたが、私の理解は回避策がjavascripにあるということです。だから、これがどのようにPythonで動作するのか理解していない(もしも...)。 – FredMaster
ところで、それはJavaですが、そこにリストされている「ElementNotVisibleException」のもっとも一般的な理由をチェックして、あなたのものがどれであるかを確認してください。 – Arman
私はis_displayedを試みましたが、私は応答として "FALSE"を取得します。だからこそありがとう。しかし、それを修正する方法はまだ分かりません。 – FredMaster