我正在尝试使用硒打印一组网页的行。
到目前为止,这是我的一段代码。
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
0 评论