嗨〜在此音乐网站上: Music website link 我想单击歌曲栏右侧的“赞”按钮 我使用以下代码:
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
我很困惑,因为我要搜索整个堆栈溢出,但是对我来说没有实际的解决方法
我只想实现单击“喜欢”按钮的简单功能 谢谢,如果您对我有什么好主意!
困难的是,您必须将鼠标暂停一会儿,然后单击显示的按钮,这样您才能单击它,这就是这种情况。
下面是图片示例
答案 0 :(得分:0)
要点击歌曲栏右侧click()
按钮上的Like
,您必须为element_to_be_clickable()
引入 WebDriverWait ,您可以使用以下命令Locator Strategies:
代码块:
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()
浏览器快照:
您可以在以下位置找到一些相关的讨论