我正在使用HTMLUnitDriver。它无法找到xpaths和css选择器
WebDriver d=new HtmlUnitDriver();
WebDriverWait wait = new WebDriverWait(d, 10);
// d.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
d.get("http://www.google.com");
//d.manage().window().maximize();
d.findElement(By.name("q")).sendKeys("flipkart");
d.findElement(By.name("btnG")).click();
Thread.sleep(5000);
String s1 = wait.until(
ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='rhs_block']/ol/li/div[1]/div/div[1]/ol/li[2]/div/div[1]"))).getText();
//String s1=d.findElement(By.cssSelector("div.kno-ecr-pt.kno-fb-ctx")).
Assert.assertEquals(s1,"Flipkart");
System.out.println(s1);
d.close();
d.quit();
它适用于所有浏览器但不适用于HTMLUNITDRIVER
我读了一些帖子说我们需要等待,我试着在硒中等待所有可能的等待。
我曾尝试过使用PhantomJS,但遇到了无法找到xpath的问题。
File file = new File("C:/jars/phantomjs-2.0.0-windows/bin/phantomjs.exe");
System.setProperty("phantomjs.binary.path", file.getAbsolutePath());
WebDriver d = new PhantomJSDriver();
//WebDriver d=new HtmlUnitDriver();
WebDriverWait wait = new WebDriverWait(d, 10);
d.get("http://www.google.com");
// d.manage().window().maximize();
d.findElement(By.name("q")).sendKeys("flipkart");
d.findElement(By.name("btnG")).click();
Thread.sleep(5000);
String s1 = wait.until(
ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='rhs_block']/ol/li/div[1]/div/div[1]/ol/li[2]/div/div[1]"))).getText();
//String s1=d.findElement(By.cssSelector("div.kno-ecr-pt.kno-fb-ctx")).
Assert.assertEquals(s1,"Flipkart");
System.out.println(s1);
d.close();
d.quit();
答案 0 :(得分:2)
这是因为默认情况下,HTMLUnit和PhantomJS的显示大小将呈现页面的移动版本(如果存在)。您可以通过明确设置驱动程序的显示大小来解决此问题:
driver.manage().window().setSize(new Dimension(1920, 1200));
其中1920是窗口宽度(以像素为单位),1200是窗口高度(以像素为单位)。将它们设置为您认为可接受的任何内容。
答案 1 :(得分:1)
HtmlUnitDriver可能与某些网站有问题。您的另一个选择可能是使用PhantomJS。 Here's a discussion about the differences between them
答案 2 :(得分:1)
当我们使用HtmlUnitDriver时,我们没有得到rhs块(右侧显示的flipkart信息部分)。我试图获取页面源(htmlunitdriver)并发现它不包含rhs块的html标记。当我们使用firefox驱动程序时,情况也会如此。
可能是rhs块需要一些物理浏览器支持才能显示。(可能只是假设)。
因此,由于它没有到来,你得到HtmlUnitDriver的 NoSuchElementException 。
答案 3 :(得分:0)
我发现问题在于我正在使用jar我正在使用jar phantomjsdriver-1.1.0.jar我已经更改了jar的版本现在是phantomjsdriver-1.2.1.jar工作得很好。
感谢帮助朋友。