我正在制作一个没有ID或类名的网表。这就是表格在HTML视图中的样子
<table style ="border-style:layout-fixed">
<tbody>
<tr>
<td>
等等
如何在selenium web驱动程序中引用此表?
答案 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
在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属性,或者专门使用的唯一类由您的测试自动机。这样你就可以依赖一个不太可能改变的细节。