我应该使用webdriver中的哪个命令来确保它点击特定文本,即上个月
代码是
<div class="dt_padded_medium_div">
<a onclick="setLastMonth()" href="#">Last Month</a>
我通过使用firepath尝试了xpath,但仍然无法正常工作 它是
//*[@id='block-2']/div/div[3]/table/tbody/tr[1]/td[5]
我用过
driver.findElement(By.xpath("//*[@id='block-2']/div/div[3]/table/tbody/tr[1]/td[5]")).click();
但仍然没有用,我错过了什么吗?
更新
让代码工作的人,感谢您的帮助!
答案 0 :(得分:0)
如果页面中只有一个'a'元素,请尝试使用此XPath:
//a[text()='Last Month']
如果有多个元素,请发布完整的HTML树,否则我们无法在不知道标记路径的情况下编写xpath并确保它可以正常工作
答案 1 :(得分:0)
首先确保您的xpath正常工作,尝试使用更具体的xpath而不仅仅是td [5]或类似的smthn,例如上面可能是这样的:
//div[@class='dt_padded_medium_div']/a[@href]
- 意思是,我们需要找到具有特定父级的<div>
元素,并且<a>
元素中包含href
属性
答案 2 :(得分:0)
你确定你的xPath是正确的吗?
在Firefox上安装 FirePath 并尝试使用xPath,如下面的屏幕截图所示。
此外,这看起来像一个冗长而脆弱的xPath。查找xPath cheat sheets以了解如何使xPath更加健壮。
在你的情况下,我会想象:
//*[@id='block-2']/descendant::a[text()='Last Month']
(获取具有特定ID的元素,然后在该元素中搜索<a></a>
,无论多深,使用特定文本)
答案 3 :(得分:0)
在你的问题中,你使用了一个&#34; id&#34;您的代码中未显示, @id =&#39; block-2&#39; 。您可能使用了错误的ID。为了帮助您,请提供完整的HTML代码吗?
根据您提供的信息,我建议的是:
确保您提供的Xpath是唯一的,您可以使用名为 Firebug 的Firefox附加组件。它将帮助您快速轻松地找到您所需的xpath。你需要做的基本上是:
这是一个快速教程: http://www.wikihow.com/Find-XPath-Using-Firebug
P.S。找到webelement的方法不止一种,请考虑使用以下选项:
此链接将引导您进入一个令人敬畏的作弊cheet。 http://scraping.pro/res/xpath-cheat/xpath_css_dom_recipes.pdf
希望它有所帮助。
答案 4 :(得分:0)
请尝试使用以下代码点击文字上个月
driver.findElement(By.xpath(".//a[text()='Last Month']")).click();
希望这有帮助。
答案 5 :(得分:0)
您可以使用以下代码点击包含“上个月”文字的链接
driver.findElement(By.linkText("Last Month")).click();
答案 6 :(得分:0)
有几种可能性。 如果您的网站没有被重写,您可以通过
获取链接名称driver.findElement(By.linkName("Last Month");
如果你的网站有很多这样的重写,你也可以使用任何属性,只需在调用它时将“href”和“#”或“onclick”和“setLastMonth()”作为参数。
static WebElement getLink(String Attribute, String Value /*String ItemText*/){
List<WebElement> Elements = driver.findElements(By.tagName("a"));
for(int Counter = 0, Counter < Elements.size(); Counter++){
if(Elements.get(Counter).getAttribute(Attribute).contains(Value) /* && Elements.get(Counter).getText().equals(ItemText){
return Elements.get(Counter);
}
}
return null;
}
如果删除注释,它将完全确定并检查属性和显示的文本。