此代码在Firefox浏览器中运行良好,但在Chrome浏览器中无法找到无法找到元素。下面是html src代码,我需要找到标题。请告诉我如何到达那里?
JAVA代码:
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 code:
<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>
答案 0 :(得分:1)
driver.switchTo().frame()
能够选择框架iframe基于id
或name
属性。假设你没有在路上使用它,那就轻松自己做吧,
base.getWebDriver().switchTo().frame("cwindow");
另外,你应该考虑学习CSS。 (By.cssSelector()
)
iframe#cwindow
比
更漂亮//iframe[@id='cwindow']
(也快得多)
就跨浏览器问题而言,@ joostschouten所说的可能是准确的,关于<head>
标签没有结束,并且chrome可能会抱怨这一点。
答案 1 :(得分:0)
您的HTML无效。除此之外,您的<head>
可能不是未公开或空的。一些浏览器渲染它并允许您通过其webdriver查找元素的事实是因为它们是透明的并且试图猜测您对HTML的意思。我还看到很多空的<script>
标记和未公开的<div>
标记,这让我相信您没有发布确切的HTML代码。
通过W3C Markup Validator验证您的HTML。一旦有效,请再试一次,您的代码应该为您提供匹配。虽然在使用xpath //div[@class='form input']
时它不会找到你的标题,因为对我而言似乎是一个形成输入的xpath。
答案 2 :(得分:0)
您可能在Chrome中遇到了无法切换到框架
的问题https://code.google.com/p/chromedriver/issues/detail?id=107
解决方法就在这里
https://code.google.com/p/chromedriver/issues/detail?id=107#c11