在WebDriver中选择元素

时间:2012-09-13 20:20:48

标签: selenium webdriver selenium-webdriver

如何仅选择`Published DateTime webelement并单击它?

我的HTML代码

<tr>
<th scope="col">
...........
</th>
<th scope="col">
...........
</th>
<th scope="col">
...........
</th>
<th scope="col">
...........
</th>
........
<th scope="col">
<a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$AddControl1$gv','Sort$PublishDateTime')">Published DateTime</a>
</th>
</tr>

4 个答案:

答案 0 :(得分:2)

试试这个:

driver.FindElement(By.LinkText("Published DateTime")).Click();

答案 1 :(得分:0)

String cssSelector= "tr>th[scope='col']>a:contains('Published DateTime')"

第一种方式:

driver.findElement(By.css(cssSelector)).click()

第二种方式(使用js):

public void jsClick(String css){
JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("var x = $(\'"+css+"\');");
        stringBuilder.append("x.click();");
        js.executeScript(stringBuilder.toString());
}
jsClick(cssSelector)

希望这适合你)

答案 2 :(得分:0)

如果要验证文本,可以使用以下方法: - 如上所述定位元素:

String cssSelector= "tr>th[scope='col']>a:contains('Published DateTime')"

验证文字的第一种方式:

String txt=driver.findElement(By.cssSelector(cssSelector)).getText().trim();
//validating 
Assert.assertTrue(txt.equals("blablabla"));

验证文字的第二种方式:

publiv String getTextByJs(String css){
 JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();

stringBuilder.append("var x = $(\""+css+"\");");
        stringBuilder.append("return x.text().toString();")       ;


       String res= (String) js.executeScript(stringBuilder.toString());
}
String txt=getTextByJs(cssSelector);
Assert.assertTrue(txt.equals("blablabla"));

享受)

答案 3 :(得分:0)

driver.FindElement(By.LinkText("Published DateTime")).Click();是一个正确的答案。另外,如果你使用的是javascript-selenium-webdriver。建议您使用https://npmjs.org/package/webdriver-helper获得更友好的apis。

driver.link(':contains("Published DateTime")').click()可以帮到你。