I am using Selenium IDE and Selenium web driver testng in eclipse .. my testing is against ZK application ..
the test case works fine on Selenium IDE ..
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="selenium.base" href="http://*****/>
<title>work it2</title>
</head>
<body>
<table cellpadding="1" cellspacing="1" border="1">
<thead>
<tr><td rowspan="1" colspan="3">work it2</td></tr>
</thead><tbody>
<tr>
<td>open</td>
<td>/xxx</td>
<td></td>
</tr>
<tr>
<td>click</td>
<td>//li[2]/div/div/div/span</td>
<td></td>
</tr>
<tr>
<td>pause</td>
<td>3000</td>
<td>3000</td>
</tr>
<tr>
<td>doubleClick</td>
<td>//div[2]/div[2]</td>
<td></td>
</tr>
<tr>
<td>pause</td>
<td>3000</td>
<td>3000</td>
</tr>
</tbody></table>
</body>
</html>
but when I run it in eclipse with selenium web driver (testng) I got an error ..
selenium.open("xxx");
selenium.click("//li[2]/div/div/div/span");
Thread.sleep(3000);
selenium.doubleClick("//div[2]/div[2]");
Thread.sleep(3000);
I also changed the code to
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);
also getting the same error ...
//div[2]/div[2]
com.thoughtworks.selenium.SeleniumException: Offset within element cannot be scrolled into view: (87, 118): [object XrayWrapper [object HTMLDivElement]] Command duration or timeout: 63 milliseconds Build info: version: '2.39.0', revision: 'ff23eac', time: '2013-12-16 16:11:15' System info: host: 'EnD', ip: '192.168.17.76', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_51' Session ID: 3b79783c-2558-4c87-bd51-a72821696040 Driver info: org.openqa.selenium.firefox.FirefoxDriver Capabilities [{platform=XP, acceptSslCerts=true, javascriptEnabled=true, cssSelectorsEnabled=true, databaseEnabled=true, browserName=firefox, handlesAlerts=true, browserConnectionEnabled=true, webStorageEnabled=true, nativeEvents=false, rotatable=false, locationContextEnabled=true, applicationCacheEnabled=true, takesScreenshot=true, version=27.0.1}]
Selenium can execute commands in Javascript with the help of the execute_script() method. For the Javascript solution, we have to pass true value to the method scrollIntoView() to identify the object below our current location on the page. We can execute mouse movement with the help of the Actions class in Selenium.
Thrown to indicate that although a WebElement is present on the DOM, it is not in a state that can be interacted with. This includes an element that is not displayed or whose center point can not be scrolled into the viewport.
Selenium can execute JavaScript commands with the help of the executeScript method. To scroll to the middle of the screen, we have to first identify the element upto which we want to scroll on the page. Then pass scrollIntoView and the web element as parameters to the executeScript method.
Naif,
Actually, your above question is different than the actual question hence you should have asked it as a separate question. Still, I'm answering to your previous question.
The error is because the element you're trying to click on isn't visible. Before you click on element, it should be visible. You can do this by following -
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
If above doesn't work, you can click on element by executing javascript(but this isn't a good practice)
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click();", element);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With