2017-03-17 80 views
0

我如何点击简单链接<a href="/some_page.html">Some page</a> via Codeception AcceptanceTester man?Codeception - 点击简单链接

class_name: AcceptanceTester 
modules: 
    enabled: 
     - WebDriver 
     - \Helper\Acceptance 
    config: 
     WebDriver: 
      url: 'http://mysite.local' 
      browser: 'firefox' 
      windowSize: '1024x768' 

我想:

public function somePage(AcceptanceTester $I) 
{ 
    $I->amOnPage('/'); 
    $I->click('Some page', '//a[href="/some_page.html"]'); 
} 

但得到一条消息:

... 
CSS or XPath element with '//a[href="/some_page.html"]' was not found. 
... 

回答

0

这是HTML结构:

<section id="products-anchor" class="products-list"> 
    <div class="container"> 
     <ul class="products"> 
      *** 
      <li class=""> 
       <h3> 
        <a href="/some_page.html"> Some page </a> 
       </h3> 
       <p> 
        <a href="/some_page.html"></a> 
       </p> 
       <p> 
        <a href="/some_page.html">Text for some page...</a> 
       </p> 
       <p></p> 
      </li> 
      *** 
     </ul> 
    </div> 
</section> 
0

您可以在这里简单的用户定位器类。请检查下面的代码段。我使用了相同的功能,但使用了功能调用。考虑我传递的是包含来自我的cept文件的URL的元素。

use \ Codeception \ Util \ Locator; className类{

公共职能fun_name($ strSomeVar,$ selectorUrl){

$I->see($strSomeVar, Locator::href($selectorUrl)); 
    $I->click(Locator::href($selectorUrl)); 

} 

}

可能是这对您有所帮助。

0

您正在使用错误的XPath的,它应该是:

$I->click('Some page','//a[@href="/some_page.html"]');

在HREF的前面,这样你缺少@。

仅举,如果你有这样的更多的联系比你可以访问第一个与此:

$I->click('Some page','(//a[@href="/some_page.html"])[1]'); 
0

希望这会帮助你。我不知道你是否必须指出h3,但我很肯定这会起作用。

$ I-> click(['xpath'=>'//ul/li/h3/a[@href="/some_page.html“]']);