如何在Selenium Webdriver中处理没有ID和类的webtable

时间:2018-03-16 11:52:40

标签: selenium

我正在制作一个没有ID或类名的网表。这就是表格在HTML视图中的样子

<table style ="border-style:layout-fixed">
  <tbody>
   <tr>
    <td>

等等

如何在selenium web驱动程序中引用此表?

2 个答案:

答案 0 :(得分:1)

查找元素

如果既没有类名也没有唯一标识元素的id,那么就有XPath。它描述了DOM中的元素是否能够选择它。 XPath字符串可能如下所示:

html/body/div[1]/section/div[1]/div/div/div/div[1]/div/div/div/div/div[3]/div[1]/div/h4[1]/b

有关详细信息,请参阅例如XPath in Selenium WebDriver: Complete Tutorial

如何将XPath送到您的桌面?

在Firefox中,您可以安装FirePath插件。这会在开发人员工具中添加一个选项卡。只需选择元素并复制XPath。

对于Chrome,XPath Helper基本上也是如此。

访问代码中的元素?

现在您已拥有该元素,您需要在代码中访问它。以下 Java 代码将为您提供元素(并单击它; Source):

d.findElement(By.xpath("<XPATH HERE>")).click();

如果您使用的是 Python ,则代码看起来会略有不同(Source):

from selenium.webdriver.common.by import By
driver.find_element(By.XPATH, '//button[text()="Some text"]')

答案 1 :(得分:0)

添加到@rollstuhlfahrer详细解答: 1.您也可以使用CssSelector 2.即使您可以让FirePath或Chrome为您生成XPath(或CssSelector),但它通常不是最佳选择,因为此XPath不一定是最易维护的选项。请注意,有许多XPath表达式可以引用相同的元素。这意味着它可能会因应用程序更改而变得无效。经验法则是使用依赖于可能更改的最少量细节的表达式。 3.假设您正在使用Selenium进行测试自动机(而不是任何其他网站抓取目标),那么最好的选择是要求开发人员向表元素添加id属性,或者专门使用的唯一类由您的测试自动机。这样你就可以依赖一个不太可能改变的细节。