首页 文章

Selenium在指定元素中查找元素

提问于
浏览
3

当谈到XING的团队时,我遇到了Selenium的麻烦 . 我在这个日期使用了两年多的解决方案已不再适用了;他们肯定已经改变了他们的HTML .

main 问题是某个选择元素在第二位没有起作用 . 现在我确定这是因为 the same (意思是相同的属性,......)下拉列表存在于另一个点的同一页面上(用于排序/过滤组显示的帖子) . 但是,我想选择提交新帖子的(子)论坛,但这不起作用 .

很明显,我尝试过很多很多不同的东西 . 我无法列出我在这里的所有尝试,因为它太多而且部分地在很久以前 . 我试过的一些内容:

  • 通过各种方法选择下拉列表(CSS Selector,类名,XPath,...)

  • 直接访问下拉列表的所需选项(通过CSS Selector,类名,XPath;甚至尝试收集所有元素的数组,并通过索引选择正确的,也不起作用)

  • 直接通过JavaScript访问下拉列表的所需选项,并通过JS访问'click'它

现在,这是我的希望 . 我想到了一种方法来选择-exactly-这个下拉(而不是其他描述的)子元素等等(这就是这个问题 Headers 的原因) . 这是HTML:

<div class="comm-navigation forum-select is-open" id="new-post-forum-select" data-is-open="true">
  <a href="#" class="comm-navigation-trigger">
      <span class="comm-navigation-name" title="Select forum">Select forum</span>
    <i class="comm-navigation-icn-closed foundation-icon-shape-arrow-down"></i>
    <i class="comm-navigation-icn-open foundation-icon-shape-arrow-up"></i>
  </a>

  <ul class="comm-navigation-dropdown hidden" style="width: 519px; display: block;">
      <li class="comm-navigation-group forum-list">
        <ul>
              <li class="comm-navigation-item">
                <a href="/communities/forums/100941274" class="comm-navigation-forum" data-forum-id="100941274" data-forum-name="Members" title="Members">
                  Members
                </a>
              </li>
              <li class="comm-navigation-item">
                <a href="/communities/forums/100941276" class="comm-navigation-forum" data-forum-id="100941276" data-forum-name="Q &amp; A" title="Q &amp; A">
                  Q &amp; A
                </a>
              </li>
              <li class="comm-navigation-item">
                <a href="/communities/forums/100941275" class="comm-navigation-forum" data-forum-id="100941275" data-forum-name="Feedback" title="Feedback">
                  Feedback
                </a>
              </li>
        </ul>
      </li>
  </ul>
    <input type="hidden" name="post[forum_id]" id="post_forum_id" value="">
</div>

我想可能会从 comm-navigation forum-select is-open (在没有 is-open 的情况下仍然关闭时)到内部元素以获取正确的Chrome元素,然后单击该选项 .

另外,我发现有一个隐藏的领域:

<input type="hidden" name="post[forum_id]" id="post_forum_id" value="">

这与我的问题完全相关;只要没有's selected, as soon as selected, the forum'的id插入到值中, value 就为空 . 我可以想象,如果没有任何JS阻止您提交表单而没有通过下拉实际选择子论坛 .

期待很好的解决方案 .

1 回答

  • 0

    如果我理解了这个问题,那么首先你需要点击带有文字"Select Forum"的 span inside the first link (class=comm-navigation-trigger) . 这使 "ul" below to be visible . 现在你需要 click the desired "li" 在这个列表中 . 如果是这样,请继续阅读 .

    • 使用css选择器找到 span - "div[id='new-post-forum-select'] > a[class='comm-navigation-trigger'] > span" . 单击此元素 .

    • 等待 list 变为可见 . 使用css选择器 - "div[id='new-post-forum-select'] > ul[class*='comm-navigation-dropdown'] “ . 使用ElementIsVisible ExpectedCondition . 虽然您可能需要或不需要此步骤,但添加此项作为检查 .

    • 找到具有所需值的 link - "div[id='new-post-forum-select'] > ul[class*='comm-navigation-dropdown'] a[class='comm-navigation-forum'][data-forum-name='Q & A']" . 点击这个 .

相关问题