我想在给定的DOM中定位元素'TableHeader‘,我使用的是XPath,但是异常无法找到元素。
Xpath : //div[@class='PageContent']/table[1]/tbody/tr/td[2]如果我的XPath有什么问题,请看一看:
DOM:
<form>
<table id="topNavigation" cellspacing="0" cellpadding="0" border="0" width="100%">
<div class="PageContent">
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tbody>
<tr>
<td class="TableLeftCor"/>
<td class="TableHeader"> Main </td>
<td class="TableRightCor"/>
</tr>
</tbody>
</table>
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<div id="copyright">
</div>
</form>我有两页的课:
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
public class LandingPage extends BasePage {
public LandingPage(WebDriver driver) {
super(driver);
// TODO Auto-generated constructor stub
}
@FindBy(name = "username")
private WebElement usernameTextbox;
@FindBy(name = "password")
private WebElement passwordTextbox;
@FindBy(name = "submit")
private WebElement loginButton;
public MainPage login(String usrname, String passwd) throws InterruptedException{
usernameTextbox.sendKeys(usrname);
passwordTextbox.sendKeys(passwd);
loginButton.click();
loginButton.click();
TimeUnit.SECONDS.sleep(3);
System.out.println(driver.getCurrentUrl());
return new MainPage(driver);
}
}package pageClasses;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
public class MainPage extends BasePage {
public MainPage(WebDriver driver) {
super(driver);
// TODO Auto-generated constructor stub
}
@FindBy(className = "TableHeader")
private WebElement pageHeader;
public void testMainPage(){
System.out.println("inside main page");
System.out.println(pageHeader.getText());
}
}发布于 2017-07-12 06:14:34
如果没有必要的话,不要使用XPath。
您的选择器可以非常简单,如:
By.ClassName("TableHeader")或者如果页面中有多个这样的表,
By.CssSelector(".PageContent .TableHeader")如果您必须使用XPath,那么最简单的等效方法是:
By.XPath("//td[@class='TableHeader']")发布于 2017-07-12 08:49:05
以下是一些替代办法:
css:#topNavigation tbody td + td
css:#topNavigation table tbody td + td
css:#topNavigation tbody td.TableHeader
css:#topNavigation table tbody td.TableHeader
xpath://table[@id='topNavigation']//tbody//td[2]
xpath://table[@id='topNavigation']//table/tbody//td[2]
xpath://table[@id='topNavigation']//tbody//td[@class='TableHeader']
https://sqa.stackexchange.com/questions/28497
复制相似问题