Java 找硒元素
我正试图找到元素,但出现了一个错误 这是我的代码:Java 找硒元素,java,selenium,Java,Selenium,我正试图找到元素,但出现了一个错误 这是我的代码: driver.get(baseURL); driver.manage().timeouts().implicitlyWait(10 ,TimeUnit.SECONDS); driver.manage().window().maximize(); //String parentHandle=driver.getWindowHandle(); driver.findElement(By.linkText("C
driver.get(baseURL);
driver.manage().timeouts().implicitlyWait(10 ,TimeUnit.SECONDS);
driver.manage().window().maximize();
//String parentHandle=driver.getWindowHandle();
driver.findElement(By.linkText("Create Account")).click();
System.out.println(driver.getCurrentUrl());
//String currentWindow=driver.getWindowHandle();
//driver.switchTo().window(currentWindow);
//String currentURL=;
//(currentURL);
for (String winHandle : driver.getWindowHandles()) {
driver.switchTo().window(winHandle); // switch focus of WebDriver to the next found window handle (that's your newly opened window)
}
driver.findElement(By.xpath("//html/body/div/div[1]/div[1]/div/div/form/div[1]/input")).sendKeys("9051902811");
driver.close();
//driver.switchTo().window(parentHandle);
}
catch(NoSuchElementException nsee){
System.out.println(nsee.toString());
}
System.exit(0);
}
我得到了一个例外:
无法定位元素方法:xpath,selector://html/body/div/div[1] /div[1]/div/div/form/div[1]/input}命令持续时间或超时:89毫秒
请帮助……根据您所展示的,很难确切说出问题所在。这可能是两件不同的事情 1元素是否存在?如果您显示html,这可以很快得到回答 XPath非常脆弱,并且非常容易出错。 尽可能使用不同的选择器,id和类更可靠。 这是该课程的链接 更具体的东西,当添加内容改变结构时,它不会破坏测试,XPath肯定会使测试变得脆弱 2输入框是否已加载 Selenium有时会尝试查找尚未加载的元素。将有助于解决此问题,您可以使用这些等待来等待元素可见、可单击、不可见等。不要使用thread.sleep,除非没有其他可能的选择 下面的代码可用于等待元素可见
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
WebDriverWait wait = new WebDriverWait(driver, seconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By
.xpath(xpath)));
可以使用XPath来确保元素是可见的,但是如果可能的话,你应该考虑使用一个不同的选择器,一个不会让你的测试很明显的选择。如果元素没有id/类,那么也可以将xpath锚定到更可靠的选择器,以减少一些脆弱性。
如果您提供html,我很乐意提供更多信息。您能显示您试图访问的字段的html吗?另外,在尝试寻找元素之前,让它睡眠2秒钟,selenium具有快速进入的能力sometimes@Decypher那是个可怕的建议。。硒缺乏是有原因的。OP-do虽然显示您试图与之交互的字段的HTML,但显式等待有时会变快,就像睡眠有时也会变快一样。这是硒的一个已知问题,将计时器调高只是为了调试
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
WebDriverWait wait = new WebDriverWait(driver, seconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By
.xpath(xpath)));