Watir和黄瓜。链接无法点击

时间:2014-04-11 03:57:18

标签: html cucumber watir

我是Watir和Cucumber的新手,我正在尝试运行自动化来创建Live ID。下面是我要点击的链接的HTML,“新”文本是它在网页上显示的内容。它会引导我将表单添加到我的Live帐户。

<ul class="c_cc" role="presentation" styple="overflow:visible;">
    <li class="c_sm c_mcp" id = "new">
        <a id href="#" class="c_nobdr t_prs">
            <span class="is_c" dir="ltr" style="padding-right: 5px;">
                <img class="is_img" src="https://p.pfx.ms/is/invis.gif" onload="this.onload=null;$Do.when('$IS.Init',0,this);" style="width:26px;height:26px;background-position:-1px -1px;background-image:url('https://p.pfx.ms/h/command4.png');" alt="New contact" title />
            </span>
            "New"
        </a>
        <span class="c_ms"></span>
    </li>
</ul>

我写的watir代码单击“新建”如下:

@browser.div(:id, "c_header").div(:id, "c_cb0").ul(:class, "c_cc").span(:text, "is_c").when_present.click

我收到此错误:

Watir::Wait::TimeoutError: timed out after 30 seconds, waiting for {:id=>"is_c", :tag_name=>"span"} to become present

然后我尝试了以下代码:

@browser.div(:id, "c_header").div(:id, "c_cb0").ul(:class, "c_cc").span(:text, "New").when_present.click

但是这段代码并没有真正点击“新建”链接,因此下一个表单不会显示,其余代码无法运行。有谁知道这个问题的任何解决方案?

我发现弹出了一个新窗口,因此无法在旧窗口中找到该元素。谢谢大家的帮助。

2 个答案:

答案 0 :(得分:0)

在第一个watir代码段中,:text定位器用于.span方法而不是:class定位器。例如:

browser.ul(:class, "c_cc").span(:text, "is_c").exists?     #=> false
browser.ul(:class, "c_cc").span(:class, "is_c").exists?    #=> true

在第二个watir代码段中,:text方法正在使用值为"New"的{​​{1}}定位器。.span方法。在这种情况下,应使用.link方法。此外,该字符串包含双引号,因此如果括在另一组双引号中(或用单引号括起来),则必须对双引号进行转义。例如:

browser.ul(:class, "c_cc").span(:text, "New").exists?      #=> false
browser.ul(:class, "c_cc").span(:text, "\"New\"").exists?  #=> false
browser.ul(:class, "c_cc").link(:text, "\"New\"").exists?  #=> true
browser.ul(:class, "c_cc").link(:text, '"New"').exists?    #=> true

因此,以下示例之一应该有效:

browser.link(:text, "\"New\"").when_present.click
browser.link(:text, '"New"').when_present.click
browser.link(:class, "c_nobdr t_prs").when_present.click

答案 1 :(得分:0)

哇。这是旧的,并且我遇到了相同的行为。首先,这是在黄瓜步骤定义中。以下代码在开放的Ruby代码中可以完美地工作。它只是拒绝充当一个步骤。

它将在表中找到链接并单击它。点击不起作用。

not-encrypted

Ruby 2.4 瓦蒂尔(6.16.5) regexp_parser(〜> 1.2) selenium-webdriver(〜> 3.6)