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

如何在SeleniumWebDriver中处理没有ID和类的webtable,selenium,Selenium,我正在处理一个没有ID或类名的webtable。这是表格在HTML视图中的外观 <table style ="border-style:layout-fixed"> <tbody> <tr> <td> 等等 如何在selenium web驱动程序中引用此表?查找元素 当您既没有类名也没有唯一标识元素的id时,就存在XPath。它描述了DOM中的一个元素所在的位置以及能够选择它的位置。XPath字符串可能如下所示: html/

我正在处理一个没有ID或类名的webtable。这是表格在HTML视图中的外观

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

等等

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

查找元素 当您既没有类名也没有唯一标识元素的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添加到表中? 在Firefox中,您可以安装插件。这将在开发人员工具中添加一个选项卡。只需选择元素并复制XPath

对于铬,有一种基本上相同的方法

访问代码中的元素? 现在您已经拥有了元素,您需要在代码中访问它。下面的Java代码将获取元素(并单击它;):

d.findElement(By.xpath(“”)。单击();
如果您使用的是Python,那么代码看起来有点不同():

通过导入从selenium.webdriver.common.by导入 driver.find_元素(By.XPATH,'//button[text()=“Some text”]”)
添加到@rollstuhlfahrer详细答案: 1.也可以使用CssSelector 2.尽管您可以让FirePath或Chrome为您生成XPath(或CssSelector),但它通常不是最佳选项,因为此XPath不一定是最易维护的。请注意,有许多XPath表达式可以引用同一元素。这意味着,由于应用程序的更改比其他更改更频繁,它可能变得无效。经验法则是使用依赖于最少量可能更改的细节的表达式。 3.假设您将Selenium用于测试自动机(而不是任何其他站点清理目标),那么最好的选择是要求开发人员向表元素添加一个id属性,或一个由测试自动机专门使用的唯一类。通过这种方式,您可以依赖一个不太可能改变的单一细节