![](/img/trans.png)
[英]Can't capture by driver.find_element_by_xpath used by selenium
[英]Python Selenium driver.find_element_by_xpath can't find element within iframe
我正在嘗試爬取體育統計網站,並意識到所有重要數據都在 iframe 中。 我使用 driver.switch_to.frame() 切換到 iframe 並且不會引發任何錯誤。
frame1 = '//iframe[@src="reallylongsource"]'
driver.switch_to.frame(driver.find_element_by_xpath(frame1))
但是當我嘗試訪問 iframe 內部的信息時,
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: .//div[@class="classname"]
被提出。 我可以看到該元素在 HTML 中,但我在 selenium 中找不到它。 我也嘗試使用 CSS 選擇器來定位它,但沒有成功。
我很確定它也是正確的 iframe。 我試過用 xpath 和標簽名稱找到它,它們是相同的 iframe。
當我打印
print(driver.find_element_by_xpath(frame1).text)
我只得到空白
我已經把我的頭撞在牆上很長一段時間了,無法弄清楚!
似乎我能夠切換到正確的 iframe,但 selenium 在其中找不到任何信息。
嘗試像這樣使用:
driver = webdriver.Chrome()
driver.get(URL)
driver.implicitly_wait(5)
driver.switch_to.frame(driver.find_element(By.TAG_NAME, 'iframe'))
element = driver.find_element(By.XPATH, '//div[@class="classname"]')
driver.quit()
如果您在代碼中所做的相同,請提供更多信息以查看該頁面
試試這個,它會移動到第一類游戲的第一場比賽,得到所有的分數並打印出來:
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://campobet.se/en/sport/prelive?sportids=66')
time.sleep(5)
driver.switch_to.frame(
driver.find_element_by_xpath("//iframe[contains(@src, 'https://sb1client-altenar.biahosted.com')]"))
time.sleep(1)
game_types = driver.find_elements_by_xpath("//div[@name='leagues-selector']")
time.sleep(1)
game_types[0].click()
time.sleep(1)
games = driver.find_elements_by_xpath(
"//div[@class='_asb_simple-button _asb_simple-button-pointer _asb_leagues-selector-item ']")
games[0].click()
time.sleep(1)
scores = driver.find_elements_by_xpath("//div[@class='asb-flex-cc asb-unshrink _asb_price-block-content-price ']/span")
time.sleep(1)
scores_values = [el.text for el in scores]
time.sleep(1)
print(scores_values)
driver.quit()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.