web-dev-qa-db-ja.com

Selenium Webドライバー:スクロールして表示することはできません

私はSelenium IDEとEclipseでSelenium Webドライバーテストを使用しています。私のテストは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>

しかし、Selenium Webドライバー(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.FirefoxDriver機能[{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、バージョン= 27.0.1}]

10
Naif

Naif、

実際、上記の質問は実際の質問とは異なるため、別の質問として質問する必要があります。それでも、私はあなたの前の質問に答えています。

エラーは、クリックしようとしている要素が表示されていないためです。要素をクリックする前に、要素が表示されているはずです。あなたは次のことでこれを行うことができます-

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

スクリプトを実行して要素をクリックしてみてください

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

よくわかりませんが、次の方法でうまくいくかどうか試してみてください。まず、要素を操作する前に、その要素を表示する必要があります-

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

上記のコードは、要素が表示されるまで下にスクロールし、要素をクリックすることができます。

1
TDHM

このエラーは、Selenium RemoteWebDriverでアンカータグをクリックしようとした(WebDriverを置き換えようとした)少し異なる状況で発生していました。修正により、ドライバの適切な機能セットが特定されました。例:

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

0
lnarasimhan