在涉及XING的小组时,我遇到了Selenium的麻烦。我在这个日期使用了两年多的解决方案已不再适用了;他们肯定已经改变了他们的HTML。
主要问题是某个选择元素没有打开(当试图通过点击打开它时)我因此无法访问选项"点击&#34 ;或者选择。我看到一个小边框包含下拉,好像它被点击但没有在第二位起作用。 现在我已经花了很长时间来详细说明错误,我很确定这是因为 相同的 (意思是相同的属性,。 ..)下拉存在于另一个点的同一页面上(对按组显示的帖子进行排序/过滤)。但是,我想选择提交新帖子的(子)论坛,这不起作用。
很明显,我尝试了很多很多不同的东西。我无法列出我在这里的所有尝试,因为它太多而且部分地在很久以前。我试过的一些内容:
现在这是我的希望。我想到了一种方法来选择-exactly-这个下拉(而不是其他描述的)子元素等等(这就是这个问题标题的原因)。 这是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 & A" title="Q & A">
Q & 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="">
这与我的问题完全相关;只要未选择任何内容,value
就会为空,只要选中,论坛的ID就会被插入到值中。我可以想象,如果没有任何JS阻止您提交表单而没有通过下拉列表实际选择子论坛。
期待很好的解决方案。
答案 0 :(得分:0)
如果我理解了这个问题,那么首先您需要点击第一个链接 (class=comm-navigation-trigger)
内的范围,并选择“选择论坛”文字。这使得下方的“ul”可见。现在,您需要点击此列表中所需的“li”。 如果有,请继续阅读。
使用css选择器"div[id='new-post-forum-select'] > a[class='comm-navigation-trigger'] > span"
找到 span 。单击此元素。
等待列表变为可见。使用css选择器 - "div[id='new-post-forum-select'] > ul[class*='comm-navigation-dropdown']
“。使用ElementIsVisible ExpectedCondition。虽然您可能需要或不需要此步骤,但请将其添加为支票。
找到包含所需值的链接 - "div[id='new-post-forum-select'] > ul[class*='comm-navigation-dropdown'] a[class='comm-navigation-forum'][data-forum-name='Q & A']"
。点击此处。