2015-09-30 189 views
1

我一直试图点击工作中的应用程序中的链接,但控件未能点击链接,无论使用哪个定位器。我使用Selenium IDE和JavaScript测试所有定位器,然后在脚本中使用它们,并且在运行测试之前它看起来都很好。我设法识别并点击链接: @FindBy(css ="/html/body/div[4]/div/div/div[2]/div[1]/a/strong")但我第二次运行测试,但未能点击链接。无法点击链接

请参见下面的HTML代码:

<div class="container container-outer"> 
    <div class="row-fluid long-text-fitted content-container" id="page-content-container"> 
     <div class="span12"> 
     <div class="row-fluid container-alert"> 
     </div> 
     <div class="left-side-spacer-layout right-side-spacer-layout" id="page-content"> 
      <div class="button-spacer" id="breadcrumb-content"> 
       <a href="/shopping/marketplace/landingPage"> 
        <strong>< Back to Search Results</strong> 
       </a> 

回答

0

您应该点击参数。删除strong属性。

/@FindBy(css ="/html/body/div[4]/div/div/div[2]/div[1]/a") 
0

使用绝对Xpath不是一个好主意。至于你说的这是工作的第一次那么可能你的DOM谢灵运之后改变点击一次

你可以用下面的XPath尝试:

driver.findElement(By.xpath("//strong[contains(.,'< Back to Search Results')]")).click(); 

如果仍然没有工作,你应该尝试点击使用JavascriptExecutor,因为它直接在HTML DOM上工作。随时根据您的方便,在下面的代码来定位元素:

WebElement element=driver.findElement(By.xpath("//strong[contains(.,'< Back to Search Results')]")); 
JavascriptExecutor executor = (JavascriptExecutor) driver; 
executor.executeScript("arguments[0].click();", element); 
0

我会避免一般,尤其是开始于HTML标签的XPath使用XPath。这使得测试非常脆弱。我会建议像下面这样的CSS选择器。

driver.findElement(By.cssSelector("#breadcrumb-content > a")).click(); 

CSS选择读取找到一个A标记,是与一个breadcrumb-content ID(#)的元素的子元素(>)。

查看更多about CSS Selectors