当谈到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 & 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="">
这与我的问题完全相关;只要没有's selected, as soon as selected, the forum'的id插入到值中, value
就为空 . 我可以想象,如果没有任何JS阻止您提交表单而没有通过下拉实际选择子论坛 .
期待很好的解决方案 .
1 回答
如果我理解了这个问题,那么首先你需要点击带有文字"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']"
. 点击这个 .