滚动+悬停技术
案例网址网易音乐:https://music.163.com/
注:自行点开网址F12查看xpath
Java:
1、关键代码行:
//3. 选择第三首歌,点击“添加到播放列表”按钮。
//滚动
//JavascriptExecutor js = (JavascriptExecutor) driver;
//js.executeScript("window.scrollBy(50, 300)");
((JavascriptExecutor) driver).executeScript("window.scrollBy(50, 300)");
//悬浮
Actions actions=new Actions(driver);
actions.moveToElement(driver.findElement(By.xpath("//*[@id=\"song-list-pre-cache\"]/div[1]/div[1]/table/tbody/tr[3]"))).perform();
Thread.sleep(3000);
driver.findElement(By.xpath("/html/body/div[3]/div[1]/div/div/div[3]/div[2]/div/div/div/div[1]/table/tbody/tr[3]/td[3]/div/a")).click();
2、完整代码展示:
driver.get("https://music.163.com/");
driver.manage().window().maximize();
//1. 打开 网易云音乐 首页,点击“歌手”
driver.findElement(By.xpath("//*[@id=\"g_nav2\"]/div/ul/li[5]/a/em")).click();
Thread.sleep(2000);
//2. 在左边华语框中选择“华语女歌手”,在字母表中选择“D”,并点击第一个歌手的照片进入详情页。
driver.switchTo().frame("contentFrame");
Thread.sleep(2000);
driver.findElement(By.xpath("//*[@id=\"singer-cat-nav\"]/div[1]/ul/li[2]/a")).click();
Thread.sleep(2000);
driver.findElement(By.xpath("//*[@id=\"initial-selector\"]/li[5]/a")).click();
Thread.sleep(3000);
driver.findElement(By.xpath("//*[@id=\"m-artist-box\"]/li[1]/div/a")).click();//找不到具有指定 ID 的上下文
Thread.sleep(3000);
//driver.findElement(By.xpath("/html/body/div[3]/div[2]/div/div/div[2]/ul/li[1]/div")).click();
//3. 选择第三首歌,点击“添加到播放列表”按钮。
//滚动
//JavascriptExecutor js = (JavascriptExecutor) driver;
//js.executeScript("window.scrollBy(50, 300)");
((JavascriptExecutor) driver).executeScript("window.scrollBy(50, 300)");
//悬浮
Actions actions=new Actions(driver);
actions.moveToElement(driver.findElement(By.xpath("//*[@id=\"song-list-pre-cache\"]/div[1]/div[1]/table/tbody/tr[3]"))).perform();
Thread.sleep(3000);
driver.findElement(By.xpath("/html/body/div[3]/div[1]/div/div/div[3]/div[2]/div/div/div/div[1]/table/tbody/tr[3]/td[3]/div/a")).click();
Python:
1、关键代码行:
# 点第三首-滚动+悬停-点击“添加到播放列表”
# 滚动
js = "window.scrollTo(50,300);"
driver.execute_script(js)
link = driver.find_element_by_xpath("/html/body/div[3]/div[1]/div/div/div[3]/div[2]/div/div/div/div[1]/table/tbody/tr[3]/td[2]/div/div/div")
# 悬停
ActionChains(driver).move_to_element(link).perform()
time.sleep(2)
driver.find_element_by_xpath("/html/body/div[3]/div[1]/div/div/div[3]/div[2]/div/div/div/div[1]/table/tbody/tr[3]/td[3]/div/a").click()
time.sleep(1)
2、完整代码展示:
from selenium import webdriver
import time
from selenium.webdriver import ActionChains
driver = webdriver.Chrome()
driver.get("https://music.163.com/")
driver.maximize_window()
# 1. 打开 网易云音乐 首页,点击“歌手”
driver.find_element_by_xpath("//*[@id=\"g_nav2\"]/div/ul/li[5]/a/em").click()
time.sleep(1)
# 在左边华语框中选择“华语女歌手”,
driver.switch_to.frame("contentFrame")
driver.find_element_by_xpath("/html/body/div[3]/div[1]/div/div[1]/ul/li[2]/a").click()
time.sleep(1)
# 点击“D”
driver.find_element_by_xpath("//*[@id='initial-selector']/li[5]/a").click()
time.sleep(1)
# 点第一个专辑
driver.find_element_by_xpath("/html/body/div[3]/div[2]/div/div/div[2]/ul/li[1]/div/a").click()
time.sleep(1)
# 点第三首-滚动+悬停-点击“添加到播放列表”
# 滚动
js = "window.scrollTo(50,300);"
driver.execute_script(js)
link = driver.find_element_by_xpath("/html/body/div[3]/div[1]/div/div/div[3]/div[2]/div/div/div/div[1]/table/tbody/tr[3]/td[2]/div/div/div")
# 悬停
ActionChains(driver).move_to_element(link).perform()
time.sleep(2)
driver.find_element_by_xpath("/html/body/div[3]/div[1]/div/div/div[3]/div[2]/div/div/div/div[1]/table/tbody/tr[3]/td[3]/div/a").click()
time.sleep(1)
# 关闭所有窗口
driver.quit()