无法使用Capybara通过Appium点击移动视图(iOS)上的按钮/链接

时间:2015-11-18 21:41:26

标签: selenium-webdriver capybara appium

无法通过Appium使用Capybara点击移动视图(iOS)上的按钮/链接

我的设置:

我正在移动视图(iOS)上测试网站。在桌面上它工作正常(使用Capybara),但是当我使用Capybara通过Appium在移动视图(iOS)上测试时,测试卡在一个按钮上,这是可见的,但是Capybara无法点击它。

HTML:

<div id="HeaderContent" class="accordion-content" style="display: block;">        

<div id="CompMessageContainer" class="content row hidden">
    <div role="alert" aria-atomic="true" aria-relevant="all" aria-live="assertive">
        <div class="uiMessaging alert-box radius success" id="ui-alert-message">
            <div>
                <div>
                    <div class="positiveCompMessageIcon"></div>
                </div>
                <div>
                    <div id="CartAlertMessage">

                    </div>
                    <ul id="cartAlertMessageDetails" class=" hidden">                            
                    </ul>
                </div>
            </div>
        </div>
    </div>
</div>
<div id="milAndFirstRespContent">
    <div id="cartBottomAlternateDiscountOptions">
        <div id="compText">
            Random Text.
        </div>
        <div class="desktopComp-btn-container">
            <a id="imgMil" href="#" class="login-trigger left utrack" data-scope="mil" data-track-event="CompTrigger">
                <div class="desktopCompMilBtn"></div>
            </a>
            <a id="imgResp" href="#" class="login-trigger left utrack" data-scope="responder" data-track-event="CompTrigger">
                <div class="desktopCompRespBtn"></div>
            </a>
            <div class="desktopCompLogo"></div>
            <div id="desktopCompVerified" class="hidden">
                <div class="desktopCompVerified"></div>
                <div id="desktopCompStatus">&nbsp;Status Verified</div>
            </div>
        </div>
        <div>

        </div>
    </div>
</div>
    </div>

我尝试点击<div class="desktopCompMilBtn"></div>按钮或a id="imgResp"元素。

pry(#<Object>)> find("div.desktopCompMilBtn").visible?
=> true

pry(#<Object>)> find("div.desktopComp-btn-container").visible?
=> true

pry(#<Object>)> find("div.desktopComp-btn-container").find("div.desktopCompMilBtn").visible?
=> true

pry(#<Object>)> find("div.desktopComp-btn-container").find("div.desktopCompMilBtn").click
=> nil

pry(#<Object>)> find("div.desktopComp-btn-container").find("a#imgMil").visible?
=> true

pry(#<Object>)> find("div.desktopComp-btn-container").find("a#imgMil").click
=> nil

pry(#<Object>)> find("div.desktopComp-btn-container").find("a#imgMil").find("div.desktopCompMilBtn").click
=> nil

遗憾的是,到目前为止,没有任何功能可以点击按钮。顺便说一句,按钮应该打开一个新窗口,不确定这是否重要。

1 个答案:

答案 0 :(得分:1)

如果没有实际测试失败的详细信息以及与点击绑定的JS,则无法100%确定您遇到的问题。 #click返回nil的事实并不意味着没有点击链接/ div。在这种情况下,它更有可能被点击,但应该处理点击的JS并没有做你期望的事情,因为iOS中的Safari会阻止弹出窗口被除了真正的任何东西启动用户点击次数 - 请参阅javascript window.open in safari

您可以通过让点击处理程序执行不同的操作(警报,更改元素的颜色等)并确认它实际上被调用来确认这种情况