首页 文章

无法在Selenium中找到元素(htmlUnitDriver)

提问于
浏览
0

我无法在selenium中找到一个元素,我使用 htmlUnitDriver . 好的驱动程序工作正常,但我无法找到谷歌搜索文本框元素 .

Here is the code:

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

public class SampleUnitDriver 
{
    public static void main(String[] args) throws Exception 
    {

            HtmlUnitDriver unitDriver = new HtmlUnitDriver();
            unitDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
            unitDriver.get("http://google.com");
            System.out.println("Title of the page is -> " + unitDriver.getTitle());

            WebElement searchBox = unitDriver.findElement(By.xpath(".//*[@id='gs_htif0']"));
            searchBox.sendKeys("Selenium");
            WebElement button = unitDriver.findElement(By.name("gbqfba"));
            button.click();
            System.out.println("Title of the page is -> " + unitDriver.getTitle());


    }
}

Here is an Error:

线程“main”中的异常org.openqa.selenium.NoSuchElementException:无法使用.//* [@ id ='gt_htif0'找到节点有关此错误的文档,请访问:http://seleniumhq.org/ exceptions / no_such_element.html构建信息:版本:'2.53.0',修订版:'35ae25b1534ae328c771e0856c93e187490ca824',时间:'2016-03-15 10:43:46'系统信息:主机:'user-PC',ip:' 192.168.1.52',os.name:'Windows 7',os.arch:'amd64',os.version:'6.1',java.version:'1.8.0_51'驱动程序信息:driver.version:组织中的SampleUnitDriver . openga.selenium.htmlunit.HtmlUnitDriver.findElementByXPath(HtmlUnitDriver.java:1165)org.openqa.selenium.By $ ByXPath.findElement(By.java:361)org.openqa.selenium.htmlunit.HtmlUnitDriver $ 5.call(HtmlUnitDriver .java:1725)org.openqa.selenium.htmlunit.HtmlUnitDriver $ 5.call(HtmlUnitDriver.java:1721)org.openqa.selenium.htmlunit.HtmlUnitDriver.implicitlyWaitFor(HtmlUnitDriver.java:1367)org.openqa.selenium .htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:1 721)在com.digitalmqc.automation.action.SampleUnitDriver.main上的org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement(HtmlUnitDriver.java:606)(SampleUnitDriver.java:19)

任何帮助都可以得到赞赏 .

3 回答

  • 0

    你找到了错误的元素,你应该尝试如下: -

    HtmlUnitDriver unitDriver = new HtmlUnitDriver();
    
    unitDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    unitDriver.get("http://google.com");
    System.out.println("Title of the page is -> " + unitDriver.getTitle());
    
    WebElement searchBox = unitDriver.findElement(By.name("q"))
    searchBox.sendKeys("Selenium");
    WebElement button = unitDriver.findElement(By.name("btnG"));
    button.click();
    System.out.println("Title of the page is -> " + unitDriver.getTitle());
    

    希望能帮助到你..:)

  • 1

    在找到元素之前添加一些显式等待:

    WebDriverWait wait = new WebDriverWait(driver, 10);
    WebElement searchBox = wait.until(ExpectedConditions.elementToBeClickable(By.xpath(".//*[@id='gs_htif0']"))));
    searchBox.sendKeys("Selenium");
    
  • 0

    我也面临同样的问题 . 但在添加代理详细信息后会解决 . 您可以通过在get方法调用之后添加以下代码来验证您是否遇到相同的问题

    System.out.println(driver.getCurrentUrl());
        System.out.println(driver.getPageSource());
    

    你会看出来的

    http://www.google.com/
    Unknown host
    

    所以你需要将代理添加到你的代码中

    WebDriver  driver = new HtmlUnitDriver(BrowserVersion.CHROME,true);
    
            Proxy proxy = new Proxy();
            proxy.setHttpProxy("XXX.XX.XX.XX:8080"); 
            ((HtmlUnitDriver) driver).setProxySettings(proxy);
    

    希望这对任何人都有帮助 . 肯定会节省几个小时的搜索

相关问题