0

このコードは Firefox ブラウザーでは正常に動作しますが、Chrome ブラウザーでは要素が見つからないと言って失敗します。以下は html src コードです。ヘッダーを見つける必要があります。そこにたどり着く方法を教えてください。

ジャワコード:

WebElement frame = base.getWebDriver().findElement(By.xpath("//iframe[@id='cwindow']"));
base.getWebDriver().switchTo().frame(frame);
Thread.sleep(5000);
WebDriver driver = gen.getWebDriver();
WebElement form = base.getWebDriver().findElement(By.xpath("//div[@class='form input']"));

HTML コード:

<iframe id="cwindow" name="cwindow" src="https://incentivesqa.ford.com/Flip/?app_context=t2&lang=en&make=Ford&model=Mustang&year=2014&zipcode=48126&paCode=03050&leadsource=FDAF-Inventory&altleadsource=SI&env=getlocaloffers&pageName=fv: si: vls: ford mustang&plan_type=MSRP">
<!DOCTYPE html>
<html>
<head>
<body>
<script src="/Scripts/Ford.Omniture.Control.js" type="text/javascript">
<script type="text/javascript">
<script type="text/javascript">
<script type="text/javascript">
<script type="text/javascript">
<div class="header">
<div class="clear"></div>
<div class="incentive">
<script type="text/javascript">
<div class="flipFilter">
<select style="display : none;" name="modelDescription">
<div>
<div class="clear"></div>
</div>
<div class="clear"></div>
<div class="lcol" style="">
<div class="rcol">
<script type="text/javascript">
<div class="form thankYou">
<div class="form working">
<div class="form input">
<h2>Fill out the form below to receive special offers</h2>
<p class="error">
<table cellspacing="0" cellpadding="0" border="0">
<input id="address" type="hidden" value="" name="address">
</div>
<div class="aprLinkContainer">
</div>
<div class="clear"></div>
<div id="printContainer" style="display:none;">
<script type="text/javascript">
<script type="text/javascript">
</div>
<div id="omnitureTarget"></div>
<div id="dartTarget">
<div id="efficientFrontierTarget"></div>
</body>
</html>
</iframe>
4

3 に答える 3

1

driver.switchTo().frame()フレームを選択する機能があります | idorname属性に基づく iframe 。今後は使用しないと仮定して、簡単に使用してください。

base.getWebDriver().switchTo().frame("cwindow");

また、CSS の学習も検討する必要があります。( By.cssSelector())

iframe#cwindow

よりもはるかにきれいです

//iframe[@id='cwindow']

(これもかなり速い)

クロスブラウザの問題に関しては、タグが終了していないことについて@joostschoutenが言ったことは正確である<head>可能性があり、クロムはそれについて不平を言っているかもしれません.

于 2013-09-29T09:25:44.560 に答える
0

HTML が無効です。とりわけ、あなた<head>は閉じられていないか空ではないかもしれません。一部のブラウザーがそれをレンダリングし、Web ドライバーを介して要素を見つけることができるという事実は、それらが寛大で、HTML で何を意味するかを推測しようとするためです。また、空の<script>タグや閉じられていないタグが多数ある<div>ため、正確な HTML コードを投稿していないと思われます。

W3C Markup Validatorで HTML を検証します。有効になったら、もう一度試してみてください。コードが一致するはずです。xpathを使用している間はヘッダーが見つかりませんが//div[@class='form input']、代わりに入力を形成するためのxpathのようです。

于 2013-09-29T07:54:02.160 に答える