【问题标题】:Selenium WebDriver -cannot switch focus to modal dialog windowSelenium WebDriver - 无法将焦点切换到模式对话框窗口
【发布时间】:2016-11-17 15:10:28
【问题描述】:

screenshot情况是我试图将 sendkeys 触发到模式对话框中,但 webdriver 无法将焦点切换到对话框上。我试过各种等待条件和切换条件都没有成功

这是 HTML 代码

新的

            <div class="row">
                <ul class="nav nav-tabs">
                    <li role="presentation" class="active"><a data-toggle="tab" href="#ModalAddCampaignsSearchTab">Search</a></li>
                    <li role="presentation"><a data-toggle="tab" href="#ModalAddCampaignsToAddTab">New ({{DealerFactory.Campaign.NumberOfCampaignsToAdd()}})</a></li>
                </ul>
                <div class="tab-content">
                    <div id="ModalAddCampaignsSearchTab" class="tab-pane fade  in active">
                        <br/>
                        <div class="col-lg-12">
                            <label for="Select_A_Campaign">Select A Campaign</label>
                            <div class="form-group">
                                <div class="input-group">
                                    <div class="input-group-addon">
                                        <i class="fa fa-search" id="icoSearch"></i>
                                        <i class="fa fa-spinner fa-pulse" id="icoSearching" style="display: none;"></i>
                                    </div>
                                    <input class="form-control" id="txtCampaignSearch" name="txtCampaignSearch" ng-change="findDealersToAdd()" ng-model="DealerFactory.Campaign.searchCampaigns.searchTerm" placeholder="Search" type="text" value="" />
                                </div>
                            </div>

                            <div id="divCampaignSearchModalResults" class="well"  ng-show="DealerFactory.Campaign.searchCampaigns.campaigns.length>0" >
                                <div class="row">
                                    <div class="col-lg-12 text-right">
                                        <p>
                                            Campaigns: {{DealerFactory.Campaign.searchCampaigns.campaigns.length}}
                                        </p>
                                    </div>
                                </div>
                                <div class="row">
                                    <div class="col-lg-12">

非常感谢任何帮助/更正/建议

我试图定位的元素是 id='txtCampaignSearch'

我正在使用 Visual Studio (IDE) 和 webdriver

【问题讨论】:

  • 你能添加模态窗口的截图吗?当您尝试识别时,抛出的异常是什么?
  • 返回无法定位元素错误,请看附件截图
  • 你能检查一下 compaignSearch 元素是否是 iFrame 标签的子元素吗?
  • 不,它不是,也不是 iFrame,它是一个使用 Angular js 的模态对话框窗口。一旦单击上一页的“添加”按钮,此对话框窗口就会淡入,如果有帮助,我可以附加页面源

标签: angularjs selenium-webdriver modal-dialog angular-ui-bootstrap


【解决方案1】:

Bootstrap is creating the modal with javascript and css,它没有创建a new window that you would have to switch between,正如您的问题所暗示的那样。

真正的问题是由于某种原因使用“input-group-addon”会阻止 WebDriver 访问输入字段,我也遇到过这个问题。

在清除密钥并将密钥发送到 txtCampaignSearch 之前,您只需要等待模态动画完成即可。

我在 input-group-addon 上遇到了类似的问题,并解决了 using javascript。试试这样的:

JavascriptExecutor js = (JavascriptExecutor)driver;
// later on...
js.executeScript("document.getElementById('txtCampaignSearch').value = 'something';");

【讨论】:

  • 感谢 Tylerockss 的回复。不幸的是,这也不起作用,从所附的屏幕截图中可以看出,webdriver 输入了不正确的字段,因为这两个字段共享相同的 id (id=txtCampaignSearch),尽管我希望我的 sendkeys 输入文本来选择一个活动字段
猜你喜欢
  • 1970-01-01
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
  • 2019-02-23
  • 2012-12-31
  • 1970-01-01
  • 2012-11-28
  • 1970-01-01
相关资源
最近更新 更多