我正在尝试点击“电影,电视和放映时间”下的IMDB最受好评的电影,但我不明白如何为它编写正确和精确的xpath。我无法点击评分最高的电影部分。
以下是代码:
driver.get("http://www.imdb.com");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.id("navTitleMenu"))).build().perform();
driver.findElement(By.xpath("//li[@id='navTitleMenu']/div/div[2]/ul[1]/li[6]/a")).click();
帮帮我。谢谢。
答案 0 :(得分:1)
你自己创建xpath我建议使用chrome创建xpath可能问题是你的xpath不正确试试这个:
//*[@id="navMenu1"]/div[2]/ul[1]/li[6]/a
或者如果没有,也许你应该等一下才能完成页面加载尝试
try {
// thread to sleep for 5 seconds
Thread.sleep(5000);
} catch (Exception e) {
System.out.println(e);
}
然后
driver
.findElement(By.xpath("//*@id="navMenu1"]/div[2]/ul[1]/li[6]/a")).click();
答案 1 :(得分:1)
这就是我的情况:
driver.get("http://www.imdb.com");
new WebDriverWait(driver, 5000)
.until(ExpectedConditions.visibilityOfElementLocated(By.id("navTitleMenu")));
new Actions(driver)
.clickAndHold(driver.findElement(By.id("navTitleMenu")))
.moveToElement(driver.findElement(By.linkText("Top Rated Movies")))
.click()
.build().perform();
问题在于,当您转到navTitleMenu
时 - 您应该继续执行您的操作,因为重点会从下拉列表中丢失(因此会关闭)
答案 2 :(得分:1)
首先, 忘记隐式等待,因为IMDB是一个稳定的站点所以不需要它
执行鼠标悬停后添加显式等待。它一定会对你有用。
尝试下面提到的确切代码,使用我的浏览器正常工作。
请根据目录中的位置更改gecko驱动程序路径
package com.imdb.top;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
public class Imdb
{
public static void main(String... args)
{
System.setProperty("webdriver.gecko.driver",
"C:\\Users\\thinksysuser\\Downloads\
\geckodriver-v0.18.0-win64\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.get("http://www.imdb.com");
Actions action = new Actions(driver);
action.moveToElement(driver.findElement(By.id("navTitleMenu")))
.build().perform();
WebDriverWait wait = new WebDriverWait(driver, 60, 50);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*
[@id='navMenu1']/div[2]/ul[1]/li[6]/a"))).click();
driver.findElement(By.xpath(".//*
[@id='navMenu1']/div[2]/ul[1]/li[6]/a")).click();
}
}