python , Selenium 。谷歌浏览器。网页抓取。如何在网站中的 'tabs' 之间导航

标签 python selenium xpath

我对 python 很菜鸟,现在正在 Selenium 中构建一个网络抓取工具,它将获取网页上单击的“选项卡”中产品的所有 URL。但我的代码从第一个“选项卡”获取 URL。代码如下。感谢你们。我开始有点沮丧哈哈。 Screenshot

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
from lxml import html 


PATH = 'C:\Program Files (x86)\chromedriver.exe'

driver = webdriver.Chrome(PATH)

url = 'https://www.alza.sk/vypredaj-akcia-zlava/e0.htm'

driver.get(url)

driver.find_element_by_xpath('//*[@id="tabs"]/ul/li[2]').click()

links = []

try:
    WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CLASS_NAME, 'blockFilter')))
    link = driver.find_elements_by_xpath("//a[@class='name browsinglink impression-binded']")
    
    for i in link:
        links.append(i.get_attribute('href'))

finally:
    driver.quit()

print(links)

最佳答案

选择当前选项卡:

current_tab = driver.current_window_handle

在选项卡之间切换:

driver.switch_to_window(driver.window_handles[1])
driver.switch_to.window(driver.window_handles[-1])

假设您的新标签页网址为 TAB_URL,您应该尝试:

from selenium.webdriver.common.action_chains import ActionChains
action = ActionChains(driver)
action.key_down(Keys.CONTROL).click(TAB_URL).key_up(Keys.CONTROL).perform() 

此外,显然 li 没有 click 事件,您确定您正在获取此元素吗 '//*[@id="tabs"]/ul/li[2]'aria-selected 属性设置为 true 或以下任何类:ui-tabs -active ui-state-active

如果没有,您应该在此li 内的a 标记上调用click

那么您应该增加 WebDriverWaittimeout 参数,以保证 div 已加载。

关于 python , Selenium 。谷歌浏览器。网页抓取。如何在网站中的 'tabs' 之间导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66769337/

相关文章:

xslt - 选择具有特定后代的节点

html - XPath 根据兄弟/表亲文本选择元素?

python - 从 View 中发出 websocket 消息

python - setFont(Times-Roman) 不能缺少 T1 文件吗?

Python SMTP : emails being combined into one

javascript - 在 python 中抓取 javascript 页面

python - 在文本小部件中重新绑定(bind) "select all"

java - 如何在 Selenium Web 驱动程序中选择 Kendo 下拉菜单?

java - Selenium Find By Xpath 返回错误的元素

xpath - xpath:查找其内容具有提供的字符串的节点