java - Selenium 网络驱动程序 : cannot be scrolled into view

标签 java selenium selenium-webdriver testng selenium-ide

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

测试用例在 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>

但是当我在 eclipse 中使用 selenium 网络驱动程序 (testng) 运行它时,我得到了一个错误..

    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: 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}]

最佳答案

天真

实际上,您的上述问题与实际问题不同,因此您应该将其作为一个单独的问题提出。尽管如此,我还是在回答你之前的问题。

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

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);

关于java - Selenium 网络驱动程序 : cannot be scrolled into view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22588096/

相关文章:

java - Selenium - 存储隐藏变量

python - 最小化 RDP(VM) 时自动化脚本失败

java - java字符串中`rtserver-id`变成`rtserver - id`

java - 如何获取设计在div文本下方的<b>标签的xpath

java - 如何阻止电子邮件通讯弹出窗口拦截点击?

java - Spring Cloud DataFlow - 如何在 TCP 源中使用自定义 TCP 编码器/解码器

java - Eclipse通过系统变量导入外部JAR

java - 标准 CodeCacheManager JMX bean 是什么?

java - 流利等待 vs WebDriver 等待

java - PHP 类似于 Java 中的自动加载器