我正在使用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();

最佳答案

这是因为默认情况下,HTMLUnit和PhantomJS的显示大小将呈现页面的移动版本(如果存在)。您可以通过显式设置驱动程序的显示大小来解决此问题:

driver.manage().window().setSize(new Dimension(1920, 1200));


其中1920是以像素为单位的窗口宽度,而1200是以像素为单位的窗口高度。将它们设置为您认为可以接受的任何值。

08-17 02:15
查看更多