我有一个HTML页面中的一长串表。以下只是列表的一小部分。
<ul id="exportContentTree" data-space-key="VAG" data-content-tree-src="/spaces/exportspacetree.action" data-content-tree-loaded="true">
<li class="content-tree-node">
<ul class="content-tree-node-children">
<li class="content-tree-node">
<input type="hidden" name="contentToBeExcluded" value="">
<input type="checkbox" name="contentToBeExported" class="exportContentTreeCheckbox" value="134258951" checked="checked">
<label class="label" for="contentToBeExported">
<a href="https://ewiki.abc.com/display/VAG/Getting+Started">Getting Started
</a>
</label>
</li>
</ul>
<ul class="content-tree-node-children">
<li class="content-tree-node">
<input type="hidden" name="contentToBeExcluded" value="">
<input type="checkbox" name="contentToBeExported" class="exportContentTreeCheckbox" value="137464227" checked="checked">
<label class="label" for="contentToBeExported">
<a href="https://ewiki.abc.com/display/VAG/Queue+Management">Queue Management
</a>
</label>
</li>
</ul>
<ul class="content-tree-node-children">
<li class="content-tree-node">
<input type="hidden" name="contentToBeExcluded" value="179758339">
<input type="checkbox" name="contentToBeExported" class="exportContentTreeCheckbox" value="179758339" checked="checked">
<label class="label" for="contentToBeExported">
<a href="https://ewiki.abc.com/pages/viewpage.action?pageId=179758339"># Archive #
</a>
</label>
</li>
</ul>
</li>
</ul>
我想检查
在上面给出的代码中,在理想的情况下,Selenium应该选中“入门”和“队列管理”的复选框,而不是“#存档#”
我使用了以下代码,以便Selenium可以遍历列表并选中所有复选框。
for topic in browser.find_elements_by_class_name('content-tree-node-children'):
topic_checkboxes = topic.find_elements_by_xpath('//*[@id="exportContentTree"]/li/*[@class="content-tree-node-children"]/li/*[@class="exportContentTreeCheckbox"]')
for checkbox in topic_checkboxes:
checkbox.click()
我试图在第二个for循环中添加一个if语句,以检查标签之间的链接文本是否以#开头,这不起作用:
for checkbox in topic_checkboxes:
if checkbox.find_element_by_xpath('//*[@id="exportContentTree"]/li/*[@class="content-tree-node-children"]/li/*[@class="exportContentTreeCheckbox"]/following-sibling::label/*').text.startswith('#') == False:
checkbox.click()
有人能告诉我哪里做错了什么吗?是Xpath表达式还是其他什么?
下面是xpath:
//ul[@class='content-tree-node-children']/descendant::label[@for='contentToBeExported']//a[not(starts-with(text(), '#'))]
将仅选择在开头中没有#
的标记。
我们使用
not()
和start-with()
来避免任何以#作为起始文本的锚标记。
我正在尝试使用jgraph T解决一个链接预测问题。我正在根据两个节点的邻居计算两个节点之间的相似性。每个节点都有一些属性。计算变得太多了,因为一些节点有大约700个邻居,而我有4500个这样的节点。我有谁对的700K边,我计算相似性。 现在,我不想使用节点的所有邻居,我只想使用每个节点的k个最近邻居来计算一对节点之间的相似度。我可以根据边共享的两个节点的属性数,或节点之间长度为n的最短路径数等,
问题内容: 考虑使用以下HTML: 我想单击abc,但是包装div可能会更改,所以 不是我想要的 我试过了: 但这不适用于更深层的嵌套 有任何想法吗? 问题答案: 的HTML 您可以将 XPATH 用作: 输出 也就是说,您的Python代码应为:
问题内容: 我想创建一个Selenium测试,以使用AOL邮件测试我们的扩展。我设法登录到AOL并撰写了电子邮件,但是我还需要在iframe中的编辑器中选择元素。我检查了一下,即使打开了编辑器,以下测试也失败了: 我得到了错误。如何通过Xpath(或通过Selenium以任何其他方式)选择iframe的主体和其他元素? 问题答案: 在切换到之前,您无法浏览。您的xPath 将不会起作用,因为代码位
问题内容: 我正在尝试使用Selenium(在Python中)从网站中提取一些信息。我一直在使用XPaths选择元素,但是在使用以下同级选择器时遇到了麻烦。HTML如下: 我可以选择“摄影师的名字” 我试图选择标记后的文本部分(示例中为“ Ansel Adams”)。我以为我可以使用以下同级选择器,但收到以下错误: 有什么想法为什么这不起作用? 问题答案: @RossPatterson是正确的。麻
如何只选择父级而不选择子级? List summaryLinks=summary.findelements(by.xpath(“”));
问题内容: 我有一个GWT应用程序,正在尝试使用Selenium编写一些测试。 我正在使用XPath来标识测试页面上的元素。使用将无效,因为这些值是由GWT自动生成的,并且可以更改。当我意识到我可以按其标签找到按钮时,事情进展顺利,如下所示: 但是,当我开始运行多个测试时,我开始遇到问题。我意识到问题是,一旦Javascript生成的GWT应用程序的所有不同“页面”都保留在HTML中的隐藏元素中。