使用htmldriver在Selenium Java中单击没有ID的链接,Tag等

时间:2015-08-09 18:38:50

标签: java selenium

我如何点击下面的内容?我尝试过使用XPath但没有雪茄!

我的尝试:

WebElement submit = driver.findElement(By.xpath("/html/body/form/table[7]/tbody/tr[2]/td[1]/a"));
submit.click();

这是HTML:

<a href="#" onclick="return mysubit('save', window.document.jobform);">
    <img src="/shared/images/template_APC/order/submit.gif" width="90" height="17" border="0" alt="Submit Booking">
</a>

2 个答案:

答案 0 :(得分:0)

您还没有说明显示的错误是什么,但可能td[1]包含多个a元素,或者您定义的xpath中的内容已更改。如果您特别想要td1,请在xpath中指定您想要的内容(即,它可能是//td[@name='cell1'])等。我发现,在xpath中硬编码特定索引通常容易出错

对于xpath,我会选择: //table[@id/class/name='xxx']//td[@id/class/name='xxx']/a[contains(@onclick,'mysubmit')]然后点击它。 (我假设你提交的方法是mysubmit,而不是你写的mysubit

答案 1 :(得分:0)

使用硬编码的XPath很容易出现问题......取决于它们运行的​​浏览器,HTML结构的变化频率等等。在这种情况下我通常做的是查看前面的所需的A标记。希望你能找到一个IDclass等可以作为开头的。你可能不会这个幸运,但你希望能得到这个想法......

<div id="home">
    <a href="#" onclick="return mysubit('save', window.document.jobform);">
        <img src="/shared/images/template_APC/order/submit.gif" width="90" height="17" border="0" alt="Submit Booking">
    </a>
</div>

在这种情况下,您可以使用CSS选择器快速获取所需的A

driver.findElement(By.cssSelector("#home > a")).click();

CSS选择器"#home > a"表示从ID“home”(#home)的元素开始,找到{>的直接子项(a4.0.0.BUILD-SNAPSHOT 1}}标签。

CSS Selectors reference