selenium - 如何通过 Python 使用 Selenium 单击动态“喜欢”按钮?
问题描述
嗨~在这个音乐网站上: 音乐网站链接 我想点击歌曲栏右侧的点赞按钮,我使用以下代码:
like_number=3
like_pos=f'#app > div > div.content-wrapper > div.song-list-view.list-view.view-without-leftbar > div.song-list > div > div.table.idle.song-table.song-list-table > div > table > tbody > tr:nth-child({str(like_number)}) > td:nth-child(5) > div > div > div:nth-child(1) > div'
button = self.browser.find_element_by_css_selector(like_pos)
self.browser.implicitly_wait(10)
ActionChains(self.browser).move_to_element(button).click(button).perform()
但是,没有响应,控制台显示我的标签不是交互式的:
element not interactable” exception
我很困惑,因为我搜索整个堆栈溢出,但对我来说没有实际的解决方案
我只是想实现一个简单的点击喜欢按钮的功能谢谢你对我有什么好主意!
困难的是你必须暂停你的鼠标一段时间然后点击按钮显示,这样你就可以点击它,这是非常有线的情况。
下面是图片示例
解决方案
要在歌曲栏右侧click()
的按钮上,您必须诱导WebDriverWait,您可以使用以下定位器策略:Like
element_to_be_clickable()
代码块:
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_options = webdriver.ChromeOptions() chrome_options.add_argument("start-maximized") driver = webdriver.Chrome(options=chrome_options) driver.get("https://www.xiami.com/favorite/88955424") ActionChains(driver).move_to_element(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//table/tbody/tr//div[@class='duration-container ops-container']")))).perform() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//table/tbody/tr//div[@class='duration-container ops-container']//div[@class='operations ops-right']/div[@class='ops-item']/div[@class='iconfont']"))).click()
浏览器快照:
参考
您可以在以下位置找到一些相关的讨论:
推荐阅读
- angular - 将参数映射到 ViewChild 元素的 Angular 工具
- php - PHP Smarty 动态地将包含插入到 Smarty 模板中
- azure - Orocrm Azure VM https 设置
- .net - 终端中的 GoogleWebAuthorizationBroker.AuthorizeAsync
- webpack - 如何使 webpack 外部可用于开玩笑
- excel - 如何根据输入数字更改单元格值
- okta - Okta - 通过 CVS 批量导入具有默认密码的新用户
- ffmpeg - 在传输到 RTMP 时在 FFMPEG 上暂停/恢复/搜索 mp4
- django - 生成了额外的别名缩略图
- javascript - 无法将 JS 文件导入 TSX 文件