使用 Selenium Python 获取所有链接

Fetch all links using Selenium Python

提问人:Sriram 提问时间:9/13/2022 更新时间:9/13/2022 访问量:64

问:

在网页中,有 15 个链接以 iframe 内的相似链接名称开头。如果我尝试获取这些链接,则并非所有链接都被获取。以下是我尝试过的代码。

driver = webdriver.Chrome(ChromeDriverManager().install())
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it(("xpath", "//*[@id='brandBand_2']/div/iframe")))
wo_link1 = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located(("partial link text", 'SA')))
for link in wo_link1:
    print(str(link.get_attribute("href")))

如果我手动将网页缩小到最大程度,那么我就可以获得所有链接。有没有其他方法可以在不缩小的情况下获取这些链接?

python selenium chrome-web-driver

评论

0赞 Carapace 9/13/2022
向我们提供该页面的 URL。

答:

0赞 Prophet 9/13/2022 #1
  1. 在你能没有这样做 - 最大化屏幕尺寸
options = Options()
options.add_argument("start-maximized")
  1. visibility_of_all_elements_located实际上不会等待与传递的定位器匹配的所有元素都可见。实际上,它会等待至少 1 个与传递的定位器匹配的元素可见,然后返回当时捕获的所有匹配元素。
    您可以使用此方法等待第一个元素可见性,添加一些短暂的延迟,然后抓取所有匹配的链接,如下所示:
driver = webdriver.Chrome(ChromeDriverManager().install())
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it(("xpath", "//*[@id='brandBand_2']/div/iframe")))
WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located(("partial link text", 'SA')))
time.sleep(1)
wo_links = driver.find_element(By.PARTIAL_LINK_TEXT, 'SA')
for link in wo_links:
    print(str(link.get_attribute("href")))

评论

0赞 Sriram 9/13/2022
感谢您的回答,但它仍然没有获取所有链接!
0赞 Prophet 9/13/2022
你能分享你正在处理的页面的链接吗?
0赞 Sriram 9/13/2022
不好意思!这是一个需要用户名和密码的 Salesforce 链接。
0赞 Prophet 9/13/2022
我理解。但是,如果没有最少的调试,就很难提供帮助......
0赞 Sriram 9/13/2022
我可以提供html代码吗?