简体   繁体   English

如何解决org.openqa.selenium.NoSuchElementException

[英]How to solve the org.openqa.selenium.NoSuchElementException

I am trying to run this program: 我正在尝试运行此程序:

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

public class HtmlDriver {
  public static void main(String[] args) {
     // Create a new instance of the html unit driver
     // Notice that the remainder of the code relies on the interface,
     // not the implementation.
  WebDriver driver = new HtmlUnitDriver();

      // And now use this to visit Google
      driver.get("http://www.stumbleupon.com/home/");

      // Find the text input element by its name
     WebElement element = driver.findElement(By.name("q"));

      // Enter something to search for
      element.sendKeys("Cheese!");

      // Now submit the form. WebDriver will find the form for us from the element
      element.submit();

      // Check the title of the page
      System.out.println("Page title is: " + driver.getPageSource());
 }
}

And I am getting the following exception: 我得到以下例外:

Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element with name: q System info: os.name: 'Linux', os.arch: 'i386', os.version: '2.6.27-7-generic', java.version: '1.6.0_12' Driver info: driver.version: HtmlDriver at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElementByName(HtmlUnitDriver.java:651) at org.openqa.selenium.By$4.findElement(By.java:148) at org.openqa.selenium.htmlunit.HtmlUnitDriver$4.call(HtmlUnitDriver.java:1133) at org.openqa.selenium.htmlunit.HtmlUnitDriver$4.call(HtmlUnitDriver.java:1) at org.openqa.selenium.htmlunit.HtmlUnitDriver.implicitlyWaitFor(HtmlUnitDriver.java:869) at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:1130) at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:330) at com.webdrivertest.HtmlDriver.main(HtmlDriver.java:20) 线程“main”中的异常org.openqa.selenium.NoSuchElementException:无法找到名称为的元素:q系统信息:os.name:'Linux',os.arch:'i386',os.version:'2.6.27- 7-generic',java.version:'1.6.0_12'驱动程序信息:driver.version:HtmlDriver at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElementByName(HtmlUnitDriver.java:651)org.openqa.selenium.By $ 4 .findElement(By.java:148)org.openqa.selenium.htmlunit.HtmlUnitDriver $ 4.call(HtmlUnitDriver.java:1133)org.openqa.selenium.htmlunit.HtmlUnitDriver $ 4.call(HtmlUnitDriver.java:1)at org.openqa.selenium.htmlunit.HtmlUnitDriver.implicitlyWaitFor(HtmlUnitDriver.java:869)org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:1130)org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement( HtmlUnitDriver.java:330)在com.webdrivertest.HtmlDriver.main(HtmlDriver.java:20)

Please help me out in resolving it. 请帮我解决一下。

There's no element with name="q" on that page, hence, NoSuchElementException. 该页面上没有name =“q”的元素,因此,NoSuchElementException。 You took the example from google and changed the site it goes to, but it's still looking for a google search box on the page. 您从谷歌获取示例并更改了它所访问的网站,但它仍然在页面上寻找谷歌搜索框。

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

public class Example  {
    public static void main(String[] args) {
        // Create a new instance of the html unit driver
        // Notice that the remainder of the code relies on the interface, 
        // not the implementation.
        try {
            WebDriver driver = new FirefoxDriver();

            // And now use this to visit Google
            driver.get("http://www.google.com");

            // Find the text input element by its name
            WebElement element = driver.findElement(By.name("q"));

            // Enter something to search for
            element.sendKeys("Cheese!");

            // Now submit the form. WebDriver will find the form for us from the element
            element.submit();

            // Check the title of the page
            System.out.println("Page title is: " + driver.getTitle());
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

When change the HtmlUnitDriver to FirefoxDriver, it is work! 将HtmlUnitDriver更改为FirefoxDriver时,它是可行的!

Using the example from the Selenium site, exactly as it is, the test fails with the same NoSuchElementException . 使用Selenium站点中的示例,就像它一样,测试失败并且具有相同的NoSuchElementException It fails also when instantiated with browser emulation such as BrowserVersion.FIREFOX_3 . 当使用浏览器模拟(例如BrowserVersion.FIREFOX_3实例化时,它也会失败。

Does the HtmlUnitDriver work at all? HtmlUnitDriver是否可以工作? Is there a need to configure it in some way first? 是否需要先以某种方式配置它?

Update: I'm sitting behind a proxy and unlike the drivers that use real browsers, this driver doesn't know about the proxy. 更新:我坐在代理后面,与使用真实浏览器的驱动程序不同,此驱动程序不知道代理。 It must be manually configured in the test case with a call to: 必须在测试用例中手动配置它,并调用:

HtmlUnitDriver.setProxy(host, port);

I haven't yet figured out how to configure it with username and password for those proxies that require authentication. 我还没有想出如何使用用户名和密码为需要身份验证的代理配置它。

尝试定义WebDriver以明确使用Firefox:

WebDriver driver = new FirefoxDriver();

We cannot use Normal WebElement For Submit 我们不能使用Normal WebElement For Submit

Instead you can try 相反,你可以尝试

WebElement form = driver.findElement(By.id("formid")); //Id of FORM Tag
form.submit();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 org.openqa.selenium.NoSuchElementException - org.openqa.selenium.NoSuchElementException 如何解决 Selenium 中的 org.openqa.selenium.NoSuchElementException? - How to resolve org.openqa.selenium.NoSuchElementException in Selenium? org.openqa.selenium.NoSuchElementException WebDriver是否在Java中? - org.openqa.selenium.NoSuchElementException WebDriver in Java? IE11的org.openqa.selenium.NoSuchElementException - org.openqa.selenium.NoSuchElementException for IE11 org.openqa.selenium.NoSuchElementException:无法找到元素错误 - org.openqa.selenium.NoSuchElementException: Unable to locate element error org.openqa.selenium.NoSuchElementException:无法找到元素: - org.openqa.selenium.NoSuchElementException: Unable to locate element: org.openqa.selenium.NoSuchElementException:无法找到元素:-搜索字段 - org.openqa.selenium.NoSuchElementException: Unable to locate element:- Search field 获取异常org.openqa.selenium.NoSuchElementException:找不到文本链接 - Getting exception org.openqa.selenium.NoSuchElementException: No link found with text org.openqa.selenium.NoSuchElementException即使存在该元素 - org.openqa.selenium.NoSuchElementException even when the element is present 无法找到元素:org.openqa.selenium.NoSuchElementException - Unable to locate element: org.openqa.selenium.NoSuchElementException
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM