xpath,但是硒没有找到它?有什么建议吗?
并尝试chropath(chrome插件),它们都不起作用:
两种方式的Java代码:
List<WebElement> Elements = driver.findElements(By.xpath("/html/body/div[2]/div/div[1]/div[2]/div[2]/div[1]/div/div[3]/div[1]/div[4]/div[2]/textarea"));
new WebDriverWait(driver, 30).until(ExpectedConditions.elementToBeClickable(By.xpath("/html[1]/body[1]/div[2]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[3]/div[1]/div[4]/div[2]/textarea[1]"))).sendKeys("testing");
这是硒所提供的:
线程“ main” org.openqa.selenium.TimeoutException中的异常: 预期条件失败:正在等待元素可点击: By.xpath: / html 1 / body 1 / div 2 / div 1 / div 1 / div 2 / div 2 / div 1 / div 1 / div 3 / div 1 / div [4] / div 2 / textarea 1 (以500 MILLISECONDS间隔尝试30秒) org.openqa.selenium.support.ui.WebDriverWait.timeoutException(WebDriverWait.java:82) 在 org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:231) 在message.hello.main(hello.java:148)上,由以下原因引起: org.openqa.selenium.NoSuchElementException:无法找到元素 使用By.xpath: / html 1 / body 1 / div 2 / div 1 / div 1 / div 2 / div 2 / div 1 / div 1 / div 3 / div 1 / div [4] / div 2 / textarea 1 有关此错误的文档,请访问: http://seleniumhq.org/exceptions/no_such_element.html构建信息: 版本:“ 3.6.0”,修订版:“ 6fbf3ec767”,时间: '2017-09-27T16:15:26.402Z'系统信息:主机: “ daviss-MacBook-Pro.local”,ip: '2600:1010:b06c:96a7:d93d:6b6e:3c3d:3826%en0',操作系统名称:'Mac OS X', os.arch:'x86_64',os.version:'10 .14.2',java.version:'10 .0.1'
想在文本区域中输入一些文本。如果硒可以做到这一点?
还要确认页面与iframe没有任何关系
答案 0 :(得分:1)
请在XPath
下尝试此操作。
driver.findElement(By.xpath("//textarea[@class='textarea']")).sendKeys("testing");
OR
driver.findElement(By.xpath("//textarea[@placeholder='inputthere~']")).sendKeys("testing");
如果出现错误。请检查是否有iframe
可用?如果可用,则必须先切换到iframe。
driver.switchTo().frame("Frame-Name")
希望这对您有所帮助!
答案 1 :(得分:1)
只需刷新页面:)
我有同样的问题。绝对xpath有效,可以在Firefox和Chrome的开发人员控制台上找到。但是,WebDriver仅能在Chrome上找到该元素,而在Firefox上却找不到。我尝试了很多事情,但没有任何效果。最终,我决定使用WebDriver和voilla刷新页面,此后相同的代码开始在Firefox中工作,并继续在Chrome中工作。因此,只需将以下行插入到您要使用绝对xpath定位元素的代码上方。
driver.navigate().refresh();
答案 2 :(得分:0)
如果需要使用元素列表,请尝试使用数组列表。
List<WebElement> Elements = driver.findElements(By.xpath("/html/body/div[2]/div/div[1]/div[2]/div[2]/div[1]/div/div[3]/div[1]/div[4]/div[2]/textarea"));
ArryaList <String> elementList = new ArryaList<>();
for (WebElement ele : Elements){
elementList.add(ele)
}
new WebDriverWait(driver, 30).until(ExpectedConditions.visibilityOf(elementList.get(0));
elementList.get(0).click();
答案 3 :(得分:0)
尝试使用javascript执行程序将值发送到WebElement:
WebElement wb = driver.findElement(By.xpath("/html/body/div[2]/div/div[1]/div[2]/div[2]/div[1]/div/div[3]/div[1]/div[4]/div[2]/textarea"));
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("arguments[0].value='(222)222-2222';", wb);
答案 4 :(得分:0)
几个原因/选项,您可以在这里尝试-
sendKeys()
sendKeys()
时,请确保已启用该框。