我想查找并比较表中的标题。然后单击标题接下来3行中的删除按钮。
示例:假设给定的输入是标题 2。我想搜索标题2并查看它是否存在,然后单击与“标题2”关联的删除按钮(如3-4行之后)。
到目前为止,这是我最接近的代码。唯一的问题是它总是点击第一个选项,而不是我想让它去的地方。
String HeadingName=“Heading 2”
driver.findElement(By.xpath(“//tr[contains(.,'“HeadingName”')]/tr[position()=4]/td[2]/div/a[2]”).click();
这是表和它的代码的样子。
标题1
姓名:Joe
性别:男性< br >选项:更新|删除< br >标题2
姓名:Jenny
性别:女性< br >选项:更新|删除< br >
<table>
<tbody>
<tr>
<th class="st-head-row" colspan="2">Heading 1</th>
</tr>
<tr class="even">
<td class="st-key">Name:</td>
<td class="st-val">Joe</td>
</tr>
<tr class="even">
<td class="st-key">Gender:</td>
<td class="st-val">Male</td>
</tr>
<tr class="even last-row">
<td class="st-key">Options:</td>
<td class="st-val">
<div style="white-space:nowrap;">
<a id="save" href="linkaddress">save</a>
|
<a id="delete" href="linkaddress">delete</a>
</div>
</td>
</tr>
<tr>
<th class="st-head-row" colspan="2">Heading 2</th>
</tr>
<tr class="even">
<td class="st-key">Name:</td>
<td class="st-val">Jenny</td>
</tr>
<tr class="even">
<td class="st-key">Gender:</td>
<td class="st-val">female</td>
</tr>
<tr class="even last-row">
<td class="st-key">Options:</td>
<td class="st-val">
<div style="white-space:nowrap;">
<a id="save" href="linkaddress">save</a>
|
<a id="delete" href="linkaddress">delete</a>
</div>
</td>
</tr>
</tbody>
</table>
我会尽量让XPath更加“语义化”,例如。
//tr[th = 'Heading 2']/following-sibling::tr[starts-with(td[1], 'Options')][1]//a[. = 'delete']
在这里,我特别寻找下一个“选项”行中的“删除”链接,而不是像“下一个但只有两行的第二个链接”这样更脆弱的链接。
使用xpath尝试下一个代码
String headingName = "Heading 2";
driver.findElement(By.xpath("//th[text()='"+ headingName +"']/parent::tr/following-sibling::tr[@class='even last-row']/td[@class='st-val']/div/a[@id='delete']")).click();
如果它有效,有关如何创建此xpath的详细信息,请查看此处 - http://www.w3schools.com/xpath/xpath_axes.asp
试试这个代码,希望它能帮助你。
driver.findElement(By.xpath("//tr/th[contains(text(),'" + HeadingName + "')]//following::tr[3]/td[2]/div/a[2]")).click();
谢谢
我搞不懂这个。 我在这个网站上工作,我使用Python中的selenium来单击类名“yellow showPopupUnder”下的第一个元素(屏幕的主要部分有20行关于房屋的黄色信息)。 当我让Selenium点击该行后,它会打开并显示更多信息。我对有“选中”和“未选中”框的部分感兴趣。这些复选框位于这样的div中: 未选中的框位于一个div中,如下所示: 我试着用几种方法联系他们: 我还尝试
点击一个元素后,如何使用selenium找到当前url?我有这个网站:http://www.runningintheusa.com/Classic/View.aspx?RaceID=5622 我有代码(假设所有相关的库都已导入) 我运行代码,它只返回原来的网址是http://www.runningintheusa.com/Classic/View.aspx?RaceID=5622 我怎么能找到的网
当单击的elemenet是父元素的最后一个子元素时,我要显示报警。我的HTML结构: 在本例中,我希望在单击该元素(父行的最后一个元素)时显示报警: 我知道我可以使用这样的somethink获得最后一个元素(但我不能在我的例子中使用这个): 我想试着做这样的事,但每次都是假的
当按下按钮时,我想遍历工作表中的所有单元格,找到包含。doc或。xls或。pdf的单元格,并隐藏整行。我知道我不能使用,但肯定有类似的内容。 单元格示例 这是我现在所拥有的,我可以用什么来替换包含?
当您需要查找单列列表的th最后一个元素时,通常的简单方法是执行两个过程。第一个查找列表的长度,第二个迭代到元素。 而优化版本利用了两个指针: 引用列表的头部 是在之前的第2个元素 这允许我们在到达列表末尾时返回的元素。我不明白为什么第二种方法比第一种更快,因为在这两种情况下,我们都有一个指针遍历整个列表,另一个指针一直迭代到元素。 这是因为缓存优化吗? 谢谢
在一个页面中有很多不同的策略可以定位一个元素。在你的项目中, 你可以选择最合适的方法去查找元素。Selenium提供了下列的方法给你: find_element_by_id find_element_by_name find_element_by_xpath find_element_by_link_text find_element_by_partial_link_text find_eleme