拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 试图在网页上打印出一行

试图在网页上打印出一行

白鹭 - 2022-02-16 1983 0 0

我正在尝试使用硒打印一组网页的行。

到目前为止,这是我的一段代码。

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 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *