如何使用Selenium点击Twitch平台离线用户的头像跳转至对应录播页
问题定位
你原有代码无法执行点击的核心原因是定位器逻辑错误:By.LINK_TEXT仅能匹配HTML中<a>标签包裹的可见文本内容,::before是CSS伪元素,不属于可被该方法匹配的文本范畴,所以根本无法定位到目标头像元素。
解决方案
Twitch离线用户主页的可点击头像,可通过CSS选择器精准定位:头像内部的<img>标签的alt属性固定为对应用户的Twitch用户名,和页面路径中的用户名一致,稳定性远高于匹配动态类名。如果遇到元素被页面层级遮挡导致普通click()失效的情况,调用JavaScript执行点击兼容性更好。
修正后完整代码
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium import webdriver from selenium.webdriver.chrome.options import Options op = Options() # 注意替换为你自己的Chrome用户数据路径 op.add_argument("user-data-dir=C:\\Users\\bestg\\AppData\\Local\\Google\\Chrome\\bor") driver = webdriver.Chrome(options=op) target_url = 'https://www.twitch.tv/mizkif' driver.get(target_url) # 从url提取用户名,拼接定位选择器 username = target_url.strip('/').split('/')[-1] avatar_selector = f"img[alt='{username}']" # 等待头像元素加载完成 avatar_img = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, avatar_selector))) # 用JS执行点击,避免元素遮挡导致的点击失效 driver.execute_script("arguments[0].click();", avatar_img)
注意事项
- 如果Twitch后续更新了页面结构导致alt属性规则变化,可以替换为匹配头像外层
<a>标签的选择器,比如a:has(figure.tw-avatar),注意需要Selenium 4.0+版本支持:has伪类 - 代码中的Chrome用户数据路径需要替换为你本地实际路径,也可以去掉该参数使用无痕模式运行
内容的提问来源于stack exchange,提问作者Nick Winston
相关产品推荐
相关产品推荐

