Selenium web驱动程序:无法滚动到视图中

我在eclipse中使用Selenium IDE和Selenium web驱动程序testng我的测试是针对ZK应用程序的..

测试用例在Selenium IDE上运行良好..

      work it2   
work it2
open /xxx
click //li[2]/div/div/div/span
pause 3000 3000
doubleClick //div[2]/div[2]
pause 3000 3000

但是当我使用selenium web driver(testng)在eclipse中运行它时,我收到了一个错误..

  selenium.open("xxx"); selenium.click("//li[2]/div/div/div/span"); Thread.sleep(3000); selenium.doubleClick("//div[2]/div[2]"); Thread.sleep(3000); 

我还将代码更改为

  driver.get("xxx"); driver.findElement(By.xpath("//li[2]/div/div/div/span")).click(); Thread.sleep(3000); WebElement ee = driver.findElement(By.xpath("//div[2]/div[2]")); Actions action = new Actions(driver); action.doubleClick(ee).perform(); Thread.sleep(3000); 

也得到同样的错误……

错误就在这一行

 //div[2]/div[2] 

com.thoughtworks.selenium.SeleniumException:元素内的偏移量无法滚动到视图中:(87,118):[object XrayWrapper [object HTMLDivElement]]命令持续时间或超时:63毫秒构建信息:版本:’2.39.0’,修订版:’ff23eac’,时间:’2013-12-16 16:11:15’系统信息:主机:’EnD’,ip:’192.168.17.76’,os.name:’Windows 7’,os.arch:’ amd64’,os.version:’6.1’,java.version:’1.7.0_51’会话ID:3b79783c-2558-4c87-bd51-a72821696040驱动程序信息:org.openqa.selenium.firefox.FirefoxDriverfunction[{platform = XP ,acceptSslCerts = true,javascriptEnabled = true,cssSelectorsEnabled = true,databaseEnabled = true,browserName = firefox,handlesAlerts = true,browserConnectionEnabled = true,webStorageEnabled = true,nativeEvents = false,rotate = false,locationContextEnabled = true,applicationCacheEnabled = true,takesScreenshot = true,版本= 27.0.1}]

纳伊夫,

实际上,您的上述问题与实际问题不同,因此您应该将其作为单独的问题提出。 不过,我正在回答你之前提出的问题。

该错误是因为您尝试单击的元素不可见。 在单击元素之前,它应该是可见的。 您可以通过以下方式完成此操作

 WebElement element = driver.findElement(By.xpath("//div[2]/div[2]")); WebDriverWait wait = new WebDriverWait(driver, 20); //here, wait time is 20 seconds wait.until(ExpectedConditions.visibilityOf(element)); //this will wait for elememt to be visible for 20 seconds element.click(); //now it clicks on element 

如果上面不起作用,你可以通过执行javascript点击元素(但这不是一个好习惯)

 JavascriptExecutor js = (JavascriptExecutor)driver; js.executeScript("arguments[0].click();", element); 

我不确定,但试着看看以下是否适合你。 首先,您必须在与之交互之前使该元素可见 –

 WebElement element = driver.findElement(By.xpath("//div[2]/div[2]")); ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element); 

上面的代码将向下滚动,直到元素可见,然后您可以单击它。

我在稍微不同的上下文中得到了这个错误,我试图用selenium RemoteWebDriver点击锚标签(我试图替换WebDriver)。 该修复程序为驱动程序确定了正确的function集,例如:

capability = DesiredCapabilities.chrome(); capability.setPlatform(Platform.WIN10); capability.setCapability("version", "66");

尝试执行脚本并单击元素

 driver.executeScript("arguments[0].click();", element)