Selenium WebDriver w/Java。在弹出窗口中选择项目时遇到问题 window

Selenium WebDriver w/Java. trouble selecting items in a pop up window

SwitchWindow、Frame、Alert,我能想到的,经过大量搜索后的一切。到目前为止没有任何效果。

当我单击 "edit" 按钮时,会弹出一个新的 window,其中包含一个文本框、特殊字符选择、保存和退出按钮。我只想在框中输入文本,但由于某种原因 webdriver 找不到该元素。

这是一些 HTML。这 文本区域名称="specHeading" 是我要编辑的内容。

<script src="/js/componentlist.js" type="text/javascript">
<script src="/js/mrinformation.js" type="text/javascript">
<script src="/js/jquery.resources.js" type="text/javascript">
<script src="/js/validateresources.js" type="text/javascript">

<div class="ckmodal-next" style="top: 9px; left: 1281.5px;"></div>
<div class="ckmodal-prev" style="top: 9px; left: 261.5px;"></div>
<div class="ckmodal-close" style="top: -225px; left: 1239px;"></div>
<div class="ckmodal-background" style="width: 100%; height: 100%; position: fixed; top: 0px; left: 0px; background-color: rgb(51, 51, 51); opacity: 0.8; z-index: 10000000;"></div>
<div class="modal-container" style="opacity: 1; position: fixed; top: -212.5px; left: 321.5px; display: block; z-index: 10000001;">
    <form class="form">
       <div class="row">
          <div class="col24">
             <div class="box box-gray">
                <h2>
                   <div class="content">
                      <fieldset class="full">
                         <div class="form-field full">
                            <label>Heading:</label>
                            <textarea name="specHeading"></textarea>
                         </div>
                         <div class="form-field full">
                            <div class="form-field bottom full">
                      </fieldset>
                      <div class="clear"></div>
                   </div>
                </div>
             </div>
          </div>
       </form>
    </div>
 </body>
</html>

看起来没有 windows 可以切换到,它不是 iframe,也不是警报。这是我认为来自模态的 JavaScript 。

<script src="/js/productheaders.js" type="text/javascript">
    ;(function($){
        var $currentEditHeader = null;

        function setupForm(e) {
            var $this = $(this),
            value = $this.siblings('span').html();

            $currentEditHeader = $this.parents('.product-header');
            $('#edit-header').ckmodal({
                onShow: function(){
                    $('textarea[name=specHeading]').val(value.replace(/<br\s*[\/]?>/g, '\n')).focus();
            }
        });
    }

function saveHeader(e) {
    var $this = $(this),
    value = $('textarea[name=specHeading]').last().val();

    if ( value == '' ) {
        var defaultValue = $currentEditHeader.attr('data-default-value');
        $currentEditHeader.children('span').text(defaultValue);
        $currentEditHeader.addClass('default');
    } else {
        $currentEditHeader.children('span').html(value.replace(/<[^>]*>?/g, '').replace(/\n/g, '<br>'));
        $currentEditHeader.removeClass('default');
    }

"popup" 可能不是一个单独的 window/frame/alert,而是主页的一部分,只是显示出来。 你可以这样对待它。仅此摘录很难说。

如果涉及某种动画,您可能需要等待它可见。

此外,在这些文本字段中插入文本时会出现一些问题。在这种情况下,以下对我们有用:

  1. 致电textFieldElement.clear()
  2. 然后调用textFieldElement.sendKeys()