在chrome / firefox控制台中找到xpath,但在硒中找不到吗?

时间:2019-03-09 22:43:23

标签: selenium selenium-webdriver xpath selenium-chromedriver

在chrome / firefox控制台中找到了

xpath,但是硒没有找到它?有什么建议吗?

enter image description here

并尝试chropath(chrome插件),它们都不起作用: enter image description here

两种方式的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没有任何关系

enter image description here

5 个答案:

答案 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)

几个原因/选项,您可以在这里尝试-

  1. 尝试清除并首先单击该框,然后使用sendKeys()
  2. 检查该元素在网页中的可见性。
  3. 元素的宽度和高度不应为零。
  4. 在尝试使用sendKeys()时,请确保已启用该框。
  5. 在找到此元素之前,请耐心等待一段时间。