如何仅选择`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>
答案 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()
可以帮到你。