Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何单击包含变量的链接到;href";属性_Javascript_Selenium_Selenium Webdriver_Webdriver Io_Webdriverjs - Fatal编程技术网

Javascript 如何单击包含变量的链接到;href";属性

Javascript 如何单击包含变量的链接到;href";属性,javascript,selenium,selenium-webdriver,webdriver-io,webdriverjs,Javascript,Selenium,Selenium Webdriver,Webdriver Io,Webdriverjs,我正在使用Selenium+WebDrivero编写验收测试。 我有一些问题-我不能点击这个链接 client.click('a[href=#admin/'+ transactionId + ']') transactionId-它是一个包含事务ID的变量。 我的HTML代码: <div class="ui-data-table"> <thead>...</thead> <tbody> <tr><td class="tac"&

我正在使用Selenium+WebDrivero编写验收测试。 我有一些问题-我不能点击这个链接

client.click('a[href=#admin/'+ transactionId + ']')
transactionId-它是一个包含事务ID的变量。 我的HTML代码:

 <div class="ui-data-table">
<thead>...</thead>
<tbody>
<tr><td class="tac">
  <span class="tooltip" title="Transaction"><i class="icon-transaction"></i></span>


</td>
<td class="tac no-break">Today 10:23</td>
<td class="break-all"></td>
<td class="tac">
    N/A
</td>
<td>Artem</td>
<td class="tac">
  <span class="tooltip" title="Pending">

    <i class="icon-clock"></i>


  </span>
</td>
<td class="break-all">Artem Arsenowitch</td>
<td class="tac">
    <a href="#admin/aceb3f65-4078-4f47-8850-95ac9135fad3"><i class="icon-arrow-circle-right"></i></a>
</td></tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
</tbody>
</div>
因为它回来了

(a[href=#admin/undefined]) 
Girish Sortur感谢您的回答,但我发现使用此代码只有一种解决方案:

('a[href=#admin/'+ transactionId + ']')
.getAttribute("p.tac", "transaction-id")
        .then(function(attr){
          transactionId = attr;
          transactionURL = 'a[href="#admin/'+ transactionId + '"]';
        })
        .click('a[href="#admin"]')
        .waitForExist("div.ui-data-table", 10000).then(function(){
          client.click(transactionURL)//That is working now
        })

仅使用Selenium,您应该首先找到元素,然后单击它,因为
click()
方法不接受参数。这是你可以做到的-

driver.findElement(by.xpath('a[href="#admin/'+ transactionId + '"]')).click();
但是,如果您将webdriver io与selenium一起使用,请确保首先生成transactionId,然后单击它,因为异步javascript可以快速执行,而无需等待事务id返回。这是怎么做的-

.waitForExist("p.tac", 10000)
.getAttribute("p.tac", "transaction-id")
.then(function(attr){ 
    transactionId = attr; 
})
.click('a[href="#admin"]').waitForExist("div.ui-data-table", 10000)
.waitForVisible('a[href="#admin/'+ transactionId + '"]', 10000)
.click('a[href="#admin/'+ transactionId + '"]');

希望这能有所帮助。

不是这种语言的专家,但请尝试客户端。单击('a[href=“#admin/”+transactionId+”])请添加您试图单击的元素的HTML(以及相关的周围HTML)以及用于获取和单击该元素的代码。似乎此解决方案应该可以工作,但是webdriver不会返回
这样的元素(“a[href=“#admin/undefined”]”
,但应该返回类似
([a[href=“#admin/”665f5344-b4e8-44e3-ab51-893dcf7bcec1“])
@Arsenowitch您能告诉我们如何获取
事务id
.getAttribute(“p.tac”,“事务id”)。然后(函数(attr){transactionId=attr;})
我不知道到底出了什么问题,但它返回错误:“使用给定的搜索参数无法在页面上找到元素。”如果可能,您可以提供完整的错误信息吗?如果您也可以创建代码要点,这将非常有用。我只得到上面描述的错误。在“管理表”上当我点击
a[href=“#admin”]
我可以看到事务列表,每个事务都有如下链接:
可能
waitForVisible()
应该可以帮助你。用此代码更新了答案。此代码仍然返回错误:“元素(a[href=#admin/undefined])10000毫秒后仍然不可见”