簡體   English   中英

Python Selenium driver.find_element_by_xpath 在 iframe 中找不到元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM