无法关注链接|贝哈特/水貂

时间:2016-05-14 21:39:35

标签: bdd behat mink

无法使用Behat / Mink点击链接。 *.feature标签中有所需的文字,所以也许这可能是原因? 这是我的Scenario: Tryin' to make it freakin' workin' yo! Given I am on "/home/" And I follow "Test" Then I should be on "/test/" 文件的一部分:

<li id="ApplicationItem_test" class=" " data-placement="right" rel="popover" data-offset="-6" data-content="" data-original-title="test">                            
  <a href="/app/tests/e76ee2a8d9094e11b6bb9c928c5d61e3/" data-subscription-id="e76ee2a8-d909-4e11-b6bb-9c928c5d61e3">                                
    <i class="picon-money-icon-16"></i>
    <span class="expand-element">test
    </span>                                    
    <div id="nodeCounter_c592e0ce62c849fab427fc9f2a04b557" style="display:inline-block">
    </div>                            </a>                    
</li>                            
<script type="text/javascript">
  var node = { id: '#nodeCounter_c592e0ce62c849fab427fc9f2a04b557', action: '/app/tests/e76ee2a8d9094e11b6bb9c928c5d61e3/GetSidebarActionCount' };
  Access.SideBar.nodesWithCounters.push(node);
</script>

这是我试图关注的页面的一部分:

And I follow "Test"
FeatureContext::clickLink()
Link with id|title|alt|text "Test" not found. (Behat\Mink\Exception\ElementNotFoundException)

这就是我得到的错误:

#include<iostream>
#include<random>
#include<ctime>
#include<cstdlib>
#include<vector>
#include<algorithm>
using namespace std;

int path_checker(vector<pair<int,int> > path, int i, int j)
{
    //cout<<"path_checker"<<endl;
    std::vector<pair<int, int> >::iterator it;
    for(it = path.begin(); it!=path.end();it++)
        if(it->first == i && it->second ==j)
            return 1;
    return 0;
}

int isVertex(int i, int j, int n)
{
    //cout<<"isVertex"<<endl;
    if((i>=0) && (j>=0))
    {
        if((i <= n) && (j <= n))
            return 1;
    }
    return 0;
}


void printAllPathsU(int *array, int i, int j, int n, vector<pair<int,int> >     path,int index)
{
   // cout<<"PrintAllPathsU_first"<<endl;
   // vector<pair<int,int>> path2 = {0};
    if((i == n) && (j == n))
    {
        if((path_checker(path,i,j)))
        {
        cout<<"Inside printing path"<<endl;
        //vector<pair<int,int> >::iterator it;
        for(int i = 0; i < path.size();i++)
            cout<<"a["<<path[i].first<<"]["<<path[i].second<<"] ";
        return;
        }
        else
        {
            path.push_back(make_pair(i,j));
            cout<<"Inside printing path"<<endl;
        //vector<pair<int,int> >::iterator it;
            for(int i = 0; i < path.size();i++)
                cout<<"a["<<path[i].first<<"]["<<path[i].second<<"] ";
            return;
        }
    }
if((*((array+i*n)+j) == 1) && (!path_checker(path,i,j)))
{
    //cout<<path.size()<<endl;
    path.push_back(make_pair(i,j));
    index++;
    //len++;
    if(isVertex(i,j-1,n))
        printAllPathsU((int *)array,i,j-1,n,path,index);
    if(isVertex(i-1,j,n))
        printAllPathsU((int *)array,i-1,j,n,path,index);
    if(isVertex(i,j+1,n))
        printAllPathsU((int *)array,i,j+1,n,path,index);
    if(isVertex(i+1,j,n))
        printAllPathsU((int *)array,i+1,j,n,path,index);
}
else if((*((array+i*n)+j) == 1) && (path_checker(path,i,j)))
{
    //cout<<"inside second else"<<endl;
    return;
}
else if(*((array+i*n)+j) == 0)
{
   // cout<<"inside third else"<<endl;
    return;
}
}

    void printAllPaths(int *array, int n)
{
vector<pair<int,int> > path;
//cout<<"PrintALLPaths"<<endl;
printAllPathsU(array, 0, 0, n, path, 0);
}




int main()
{       //populating matrix
    int n;
    cout << "Enter value of n (for n x n matrix): ";
    cin >> n;
    int i;
    int j;
    int k;
    int test=1;
    int array[n][n];
    int randomval;
    int total_elements = n*n;
    int counter_0 = 0;
    int max_0 = 0.2 * total_elements;
    cout << "Number of zeros(20% of n*n) in matrix: ";
    cout<<max_0<<endl;
    int count=0;
    srand(time(0));
    for(i = 0;i < n;i++)
    {
        for(j = 0;j<n;j++)
        {
            array[i][j]=-1;
        }
    }
    while(count < total_elements)
        {
            i=rand()%n;
            j=rand()%n;
            if(array[i][j]==1 || array[i][j]==0)
            {
                continue;
            }
            else if(array[i][j] == -1)
            {   
                count+=1;
                if(i==0 && j==0)
                {
                    array[i][j]=1;
                }
                else if (counter_0 < max_0)
                {
                    counter_0+=1;
                    array[i][j] = 0;
                }
                else if(counter_0 >= max_0)
                {   
                    test+=1;
                    array[i][j] = 1;

                }

            }
            else{continue;}
        }
    cout<<"# of 1s:"<<test<<" & # of 0s:"<<counter_0<<endl;
    cout<<"Elements Populated:"<<count<<endl;
    cout<<"Total Elements in matrix:"<<total_elements<<endl;
    if(counter_0 < max_0)
    {   cout<<"adding more zeros"<<endl;
        while(k < (max_0 - counter_0))
        {
            i = rand()%n;
            j = rand()%n;
            if(array[i][j] == 0)
            {

            }
            else
            {
            array[i][j] = 0;
            k+=1;
            }
        }
    }
    for(i = 0;i < n;i++)
    {
        for(j = 0;j<n;j++)
        {
            cout<<array[i][j]<<" ";
        }
        cout<<endl;
    }


//printing paths
if(array[1][0]==0 && array[0][1]==0)
{
    cout<<"No Possible paths homie #snorlaxiseverywhere";
}else
{
//printing paths
    printAllPaths((int *)array, n);
}
return 0;
}

尝试过在互联网上找到的所有可能的CSS选择器功能。另外我想知道我不应该在这里使用Selenium扩展Behat(因为JS?)

1 个答案:

答案 0 :(得分:0)

答案是:我不在正确的页面上。 基本上情景应该是独立的 - 这意味着我之前的会话被烧毁了,我错过了一些先前的步骤(例如,登录)。