提问人:Sriram 提问时间:9/13/2022 更新时间:9/13/2022 访问量:64
使用 Selenium Python 获取所有链接
Fetch all links using Selenium Python
问:
在网页中,有 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")))
如果我手动将网页缩小到最大程度,那么我就可以获得所有链接。有没有其他方法可以在不缩小的情况下获取这些链接?
答:
0赞
Prophet
9/13/2022
#1
- 在你能没有这样做 - 最大化屏幕尺寸
options = Options()
options.add_argument("start-maximized")
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代码吗?
评论