【问题标题】:xpath found in chrome/firefox console, but not found by selenium?在 chrome/firefox 控制台中找到 xpath,但 selenium 没有找到?
【发布时间】:2019-07-31 15:16:23
【问题描述】:

在 chrome/firefox 控制台中找到 xpath,但 selenium 没有找到?有什么建议吗?

并尝试 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");

这是 Selenium 提供的:

线程“主”org.openqa.selenium.TimeoutException 中的异常: 预期条件失败:等待元素可点击: 通过.xpath: /html1/body1/div2/div1/div1/div2/div2/div1/div1/div@9876543 /div1/div[4]/div2/textarea1 (以 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: /html1/body1/div2/div1/div1/div2/div2/div1/div1/div@9876543 /div1/div[4]/div2/textarea1 有关此错误的文档,请访问: http://seleniumhq.org/exceptions/no_such_element.html 构建信息: 版本:'3.6.0',修订:'6fbf3ec767',时间: '2017-09-27T16:15:26.402Z' 系统信息:主机: '戴维斯-MacBook-Pro.local', ip: '2600:1010:b06c:96a7:d93d:6b6e:3c3d:3826%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.2', java.version: '10.0.1'

想在文本区域中添加一些文本。如果这可能与硒?

同时确认页面与iframe没有任何关系

【问题讨论】:

    标签: selenium selenium-webdriver xpath selenium-chromedriver


    【解决方案1】:

    XPath下面试试这个应该可以的。

    driver.findElement(By.xpath("//textarea[@class='textarea']")).sendKeys("testing");
    

    driver.findElement(By.xpath("//textarea[@placeholder='inputthere~']")).sendKeys("testing");
    

    如果它给出错误。请检查任何iframe 是否可用?如果可用,则必须先切换到 iframe。

    driver.switchTo().frame("Frame-Name") 
    

    希望对您有所帮助!

    【讨论】:

    • 谢谢你,尽管它们都不适合我。 iframe 不可用。
    【解决方案2】:

    如果您需要使用元素列表,请尝试使用数组列表。

    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】:

      尝试使用 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】:

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

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

        【讨论】:

          【解决方案5】:

          只需刷新页面 :)

          我有同样的问题。绝对 xpath 是有效的,可以在 Firefox 和 Chrome 的开发者控制台上找到。但是,WebDriver 只能在 Chrome 上找到该元素,而无法在 Firefox 上找到它。我尝试了很多东西,但没有任何效果。最后,我决定使用 WebDriver 刷新页面,然后,同样的代码开始在 Firefox 中运行并继续在 Chrome 中运行。因此,只需在您尝试使用绝对 xpath 定位元素的代码上方插入以下行。

          driver.navigate().refresh();
          

          【讨论】:

            猜你喜欢
            • 2022-10-01
            • 2015-09-22
            • 2023-01-21
            • 1970-01-01
            • 2015-12-30
            • 1970-01-01
            • 2013-05-14
            • 2019-12-22
            • 1970-01-01
            相关资源
            最近更新 更多