我正在嘗試使用硒列印一組網頁的行。
到目前為止,這是我的一段代碼。
import selenium
from selenium import webdriver as wb
webD=wb.Chrome("C:\Program Files (x86)\chromedriver.exe")
webD.get('https://www.flashscore.com/')
webD.maximize_window() # For maximizing window
webD.implicitly_wait(2) # gives an implicit wait for 20 seconds
webD.find_element_by_id('onetrust-reject-all-handler').click()
matchpages = webD.find_elements_by_class_name('preview-ico.icon--preview')
for matchpages in matchpages:
matchpages.click()
現在,我想通過執行以下操作在網頁上顯示完整的文本:
driver.find_element(By.CLASS_NAME,"smallArrow-ico").click()
這應該為 for 回圈中的每個網頁完成。
除此之外,我想列印出以下行:
main = driver.find_element(By.XPATH,"//div[@class='previewLine' and ./b[text()='Hot
stat:']]").text
main = main.replace('Hot stat:','')
print(main)
如何在 for 回圈中包含兩段文本?
提前致謝。
uj5u.com熱心網友回復:
您嘗試單擊的元素有點棘手。
試試這個:
matchpages = webD.find_elements_by_xpath("//*[@class='preview-ico icon--preview']//*[name()='use']")
for matchpages in matchpages:
matchpages.click()
單擊上方的元素會打開一個新視窗。所以你必須切換到新的視窗句柄才能訪問那里的元素,完成后關閉它并切換到主視窗繼續在那里作業。
所以你的代碼可以是這樣的:
wait = WebDriverWait(driver, 20)
matchpages = webD.find_elements_by_xpath("//*[@class='preview-ico icon--preview']//*[name()='use']")
for matchpages in matchpages:
matchpages.click()
new_window = driver.window_handles[1]
original_window = driver.window_handles[0]
driver.switch_to_window(new_window)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.previewShowMore.showMore"))).click()
main = driver.find_element(By.XPATH,"//div[@class='previewLine' and ./b[text()='Hot stat:']]").text
main = main.replace('Hot stat:','')
print(main)
driver.close()
driver.switch_to_window(original_window)
要使用 Web 驅動程式等待,您將需要以下匯入:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/401197.html
