我正在尝试使用Selenium和JAVA实现web测试的自动化,
public class HomePage extends TestBase {
@FindBy(xpath = "//header//div[@id='masthead']")
public Header HeaderHomePage;
public HomePage() {
PageFactory.initElements(driver, this);
}
}
SmallBusinessPage.java
public class SmallBusinessPage extends TestBase{
@FindBy(xpath = "//header//div[@id='masthead']")
public Header HeaderSmallBusiness;
public SmallBusinessPage() {
PageFactory.initElements(driver, this);
}
}
标题
public class Header extends TestBase{
@FindBy(xpath="//a[normalize-space()='Enroll']")
WebElement LinkEnroll;
public Header() {
PageFactory.initElements(driver, this);
}
}
页脚
public class Footer extends TestBase {
@FindBy(xpath="//footer//a[text()='Careers']")
public WebElement LinkCareers;
public Footer() {
PageFactory.initElements(driver, this);
}
}
public class TestBase {
public static WebDriver driver;
public static Properties prop;
Header header = new Header();
public TestBase(){
try {
prop = new Properties();
FileInputStream istream = new FileInputStream("C:\\QA -Selenium\\WS\\WellsFargoTest\\src\\main\\java\\com\\wellsfargo\\qa\\config\\config.properties");
prop.load(istream);
}
catch(FileNotFoundException e) {
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}
}
public static void initialization() {
String browserName = prop.getProperty("browser");
if(browserName.equals("chrome")){
System.setProperty("webdriver.chrome.driver","C:\\Selenium\\chromedriver");
driver =new ChromeDriver();
}
if(browserName.equals("FF")){
System.setProperty("webdriver.gecko.driver","C:\\Selenium\\geckodriver");
driver = new FirefoxDriver();
}
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
driver.manage().timeouts().pageLoadTimeout(TestUtility.PAGE_LOAD_TIMEOUT, TimeUnit.SECONDS);
driver.manage().timeouts().implicitlyWait(TestUtility.IMLICIT_WAIT, TimeUnit.SECONDS);
driver.get(prop.getProperty("url"));
}
}
public class TestCaseDevelopment extends TestBase{
HomePage homePage;
public TestCaseDevelopment() {
super();
}
@BeforeMethod
public void setup() {
initialization();
homePage = new HomePage();
****homePage.HeaderHomePage.l****
}
}
根据标准实践,您必须创建一个名为baespage.java
的类,它保留整个应用程序的所有公共定位器。所有page对象都将扩展该类,因此所有公共定位器都可用于所有page对象。请看一下。
basePage.java
public class BasePage{
@FindBy(xpath="//a[normalize-space()='Enroll']")
WebElement LinkEnroll;
@FindBy(xpath="//footer//a[text()='Careers']")
public WebElement LinkCareers;
public BasePage() {
PageFactory.initElements(driver, this);
}
public void clickEnroll()
{
LinkEnroll.click();
}
}
现在,您不需要header.java和footer.java这两个单独的类,因为这两个类在应用程序中都有通用的定位器,所以它被移动到basepage.java中
public class HomePage extends BasePage {
@FindBy(xpath = "//header//div[@id='masthead']")
public Header HeaderHomePage;
public HomePage() {
PageFactory.initElements(driver, this);
}
}
TestBase.java
public class TestBase {
public static WebDriver driver;
public static Properties prop;
Header header = new Header();
public TestBase(){
try {
prop = new Properties();
FileInputStream istream = new FileInputStream("C:\\QA -Selenium\\WS\\WellsFargoTest\\src\\main\\java\\com\\wellsfargo\\qa\\config\\config.properties");
prop.load(istream);
}
catch(FileNotFoundException e) {
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}
}
public static void initialization() {
String browserName = prop.getProperty("browser");
if(browserName.equals("chrome")){
System.setProperty("webdriver.chrome.driver","C:\\Selenium\\chromedriver");
driver =new ChromeDriver();
}
if(browserName.equals("FF")){
System.setProperty("webdriver.gecko.driver","C:\\Selenium\\geckodriver");
driver = new FirefoxDriver();
}
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
driver.manage().timeouts().pageLoadTimeout(TestUtility.PAGE_LOAD_TIMEOUT, TimeUnit.SECONDS);
driver.manage().timeouts().implicitlyWait(TestUtility.IMLICIT_WAIT, TimeUnit.SECONDS);
driver.get(prop.getProperty("url"));
}
}
测试案例开发
public class TestCaseDevelopment extends TestBase{
HomePage homePage;
public TestCaseDevelopment() {
super();
}
@BeforeMethod
public void setup() {
initialization();
homePage = new HomePage();
//Now you can call clickEnroll from any page object
homePage.clickEnroll();
}
}
问题内容: 如何使用itext从html源向pdf添加标头? 当前,我们扩展了PdfPageEventHelper并覆盖了这些方法。工作正常,但是当我进入2个以上页面时,它将引发RuntimeWorkerException。 问题答案: 通常, 禁止 在事件中添加内容。这是 禁止 添加内容到的对象。您应该使用而 不是 文档在方法中添加页眉和页脚。此外:通过一遍又一遍地解析HTML,您正在浪费大量C
我正在尝试使用Selenium和C#实现web测试的自动化。 我有一个web应用程序,它的某些部分(如页眉和页脚)在多个页面上重复。 假设我有SecA,SecB,secc部分。在我的页面中,它将显示为第1页将有{SecA,SecB,SecC},第2页将有{SecA,SecB},第3页将有{SecB,SecC}。
我正在开发一个Spring MVC应用程序,它将FreeMarker用于我的视图。 我对FreeMarker非常陌生,我有以下问题:在我的projct中,有3个文件必须被组装到一个页面中。 所以我有: 1) 标题。ftl表示我所有页面的标题,类似于: 2)footer.ftl代表我所有页面的页脚: 3) 然后我有了我的特定页面(名为myPage.ftl),它只表示内容,如下所示: 标题。ftl和页
` 在此输入代码
问题内容: 我真的不喜欢在每个控制器中编写代码: 是否可以这样做,将自动包含页眉和页脚,如果需要更改它,我们也可以这样做吗?你怎么处理?还是您认为这不是问题?谢谢。 问题答案: 这是我的工作: 对于CI 3.x: 然后,在您的控制器中,这就是您要做的一切:
我花了一点时间试图找到一种方法来向添加一个标头,但没有成功。 这是我目前得到的: 似乎是处理项的对象。由于我找不到任何方法,所以我决定使用的方法,并在第一个位置添加header视图以充当header。 这就是事情变得更丑陋的地方: 在创建活动的不同时刻,尝试调用的几次(也尝试在设置好所有内容后添加视图,甚至适配器的数据)之后,我意识到我不知道这是否是正确的方法(而且看起来并不正确)。 PS:另外,