Selenium Python实现Roblox游戏轮播图src复制粘贴问题求助
解决Roblox轮播图src获取并粘贴的问题
你的代码存在几个关键问题,导致无法正确获取目标图片的src并粘贴:
- 获取src后未保存或写入剪贴板:你调用了
get_attribute('src')但没有将结果存储到变量,也没有写入系统剪贴板,因此Ctrl+V粘贴的是剪贴板原有内容 By.CLASS_NAME不支持多类名:Selenium的CLASS_NAME定位器仅能识别单个类,多类组合需要使用CSS选择器(格式为.类名1.类名2.类名3)- 定位器与等待逻辑不匹配:原代码等待的是普通缩略图元素,而非激活状态的轮播项,后续重复获取src的逻辑也未实际使用
以下是修正后的代码(优先采用直接输入内容的方式,避免剪贴板冲突,稳定性更高):
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 初始化Chrome浏览器(需确保对应版本的ChromeDriver可用) driver = webdriver.Chrome() # 打开目标Roblox游戏页面 driver.get("https://www.roblox.com/games/6661139142/ARMY-Military-Defense-Tycoon") # 等待激活状态的轮播图图片加载完成,使用精准CSS选择器定位 active_carousel_img = WebDriverWait(driver, 20).until( EC.visibility_of_element_located( (By.CSS_SELECTOR, '.thumbnail-2d-container.carousel-item.carousel-item-active img') ) ) # 获取目标图片的src并保存到变量 img_src = active_carousel_img.get_attribute('src') # 切换到第二个窗口 driver.switch_to.window(driver.window_handles[1]) # 等待输入框可交互,替换time.sleep为显式等待 input_box = WebDriverWait(driver, 20).until( EC.element_to_be_clickable( (By.XPATH, '/html/body/div[1]/div[2]/div[3]/div[1]/div[3]/form/div/div/div[2]/div/div[6]/div[2]/div/table[2]/tbody/tr/td[1]/input') ) ) # 清空输入框后直接输入获取到的src(无需依赖剪贴板) input_box.clear() input_box.send_keys(img_src) # 后续操作根据需求补充 # driver.close()
额外说明:
- 如果一定要使用剪贴板方式,可安装
pyperclip库(pip install pyperclip),添加pyperclip.copy(img_src)后,再用send_keys(Keys.CONTROL, 'v')粘贴 - 尽量避免使用绝对XPATH定位输入框,可尝试通过元素的id、name或父级类名构造更简洁的定位器,防止页面结构变动导致定位失效
内容的提问来源于stack exchange,提问作者Lubaba Ell
相关产品推荐
相关产品推荐

