我编写了一个Webdriver测试,在运行时,有时会完成,有时则不会。
我看不出原因,我的猜测是我验证页面加载的方式不健全。
我通过在页面上等待元素“id / name / css或text”来验证网站是否在正确的位置,但是我可以找到一些元素:
<a href="javascript:doaction('1');">
<img src="images/english/go.gif" border="0" width="39" height="24"></a>
<a href="javascript:doaction('2');">
<img src="images/english/go.gif" border="0" width="39" height="24"></a>
<a href="javascript:doaction('3');">
<img src="images/english/go.gif" border="0" width="39" height="24"></a>
有没有人有效地找到这些元素?
答案 0 :(得分:2)
您可以通过其属性找到元素,例如href和src。
By link = By.cssSelector("a[href=\"javascript:doaction('1');\"]"); // The quotes are escaped out because of the single quotes in the href. Normally I would just do like I did with src and use single quotes around the href
By src = By.cssSelector("img[src='images/english/go.gif']");
WebElement linkElement = driver.findElement(link);
linkElement.click();
WebElement srcElement = driver.findElement(src);
srcElement.click();
答案 1 :(得分:0)
您始终可以使用By
linkText
的方法,根据它的href =“”属性找到元素。
即。 (假设司机已经开始)。
By doActionOneAnchor = By.linkText("javascript:doaction('1')");
WebElement doActionOne = driver.findElement(doActionOne);
这是您将能够使用它的WebElement。如果由于某种原因你需要对图像本身采取行动,你可以随时做:
WebElement imgDoActionOne = doActionOne.findElement(By.tagName("img"));
希望它有所帮助。