私は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}]
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);
スクリプトを実行して要素をクリックしてみてください
driver.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を置き換えようとした)少し異なる状況で発生していました。修正により、ドライバの適切な機能セットが特定されました。例:
capability = DesiredCapabilities.chrome(); capability.setPlatform(Platform.WIN10); capability.setCapability("version", "66");