我使用selenium webdriver来自动化网页。我的selenium代码没有识别链接。我收到以下错误。
线程“main”中的异常org.openqa.selenium.NoSuchElementException: 没有这样的元素:无法找到元素: {“method”:“xpath”,“selector”:“/ html / body / font / font / b / a [2]”}(会话) info:chrome = 44.0.2403.89)
这是我正在使用的代码。
public static void main(String[] args)
{
System.setProperty("webdriver.chrome.driver","C:\\Program Files (x86)\\Google\\Chrome\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("url");
driver.findElement(By.xpath("/html/body/font/font/b/a[2]")).click();
}
提前致谢
答案 0 :(得分:0)
有两种可能的情况
1)您可能输错了网址
2)你的预期元素xpath是错误的。
请使用
验证您的xpath这个tolol:https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl?hl=en
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\Program Files (x86)\Google\Chrome\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("Valid url");
driver.findElement(By.xpath("your valid XPATH")).click();
driver.close();
}
答案 1 :(得分:0)
如果您获得NoSuchElementException
作为提供的例外情况,可能有以下原因: -
您可能找不到xpath
的错误,因此您需要共享HTML以获得更好的定位器解决方案。
可能是在您要查找元素时,它不会出现在DOM
上,因此您应该实现WebDriverWait
以等待元素可见且可点击如下: - < / p>
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement el = wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Duty Office")));
el.click();
此元素可能位于任何frame
或iframe
内。如果是,您需要在找到以下元素之前切换frame
或iframe
: -
WebDriverWait wait = new WebDriverWait(driver, 10);
//Find frame or iframe and switch
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("your frame id or name"));
//Now find the element
WebElement el = wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Duty Office")));
el.click();
//Once all your stuff done with this frame need to switch back to default
driver.switchTo().defaultContent();
希望它有帮助...:)