我想在Google主页上搜索“ Prime Video”,然后单击Google Search Page上的“新闻链接”。我已经使用xpath来找到此链接,但是在执行代码时,我收到了NoSuchElementException。我已经使用了下面的代码,请帮助我知道为什么下面的代码不起作用::
System.setProperty("webdriver.gecko.driver", "C:/Users/gecko/geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.get("https://www.google.com/");
WebElement ele = driver.findElement(By.name("q"));
ele.sendKeys("prime video");
ele.submit();
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement news = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='hdtb-msb-vis']//div[text()='News']")));
news.click();
driver.close();
答案 0 :(得分:1)
您可以尝试这个吗?我看到您也忘记了 Click(); 。 取消定位元素有几个原因。原因之一是xpath无效或在该页面上找不到。一种检查方法是使用find.element,然后使用xpath(如果未找到它会抛出异常)。这是一个例子。
WebDriver driver = new FirefoxDriver();
driver.get("https://www.google.com/");
/*wait page for 2 seconds -- simple way wait, but don't recommended for using real testing*/
Thread.sleep(2000);
driver.findElement(By.name("q")).Click;
driver.sendKeys("prime video");
driver.sendKeys(Keys.ENTER);
然后尝试使用来验证xpath是有效还是无效
try
{
driver.findElement(By.xpath("//*[@id='hdtb-msb-vis']//div[text()='News']")).Click;
}
catch(NoSuchElementException ex)
{
System.out.println("There is no element in this page or xpath is invalid : "+ex.Message);
}
catch(Exception ex)
{
System.out.println("Exception : "+ex.Message);
}
如果xpath无效或未找到,您可以尝试使用 Katalon Recorder 或 Chropath chrome扩展程序,以帮助查找xpath。
Katalon记录
https://chrome.google.com/webstore/detail/katalon-recorder/ljdobmomdgdljniojadhoplhkpialdid
变色龙
https://chrome.google.com/webstore/detail/chropath/ljngjbnaijcbncmcnjfhigebomdlkcjo?hl=en
答案 1 :(得分:0)
它对我的xpath稍有不同:
WebElement news = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"hdtb-msb-vis\"]/div[2]/a")));