硒场定位器

时间:2017-06-15 21:25:37

标签: selenium selenium-webdriver

有人可以帮我找到一个链接字段 测试网站:http://demosite.center/wordpress/wp-login.php 用户名:admin 密码:demo123

测试用例:点击左边的帖子有侧面板,然后点击添加新。

我无法找到帖子'登录后链接。脚本抛出此错误java.lang.reflect.InvocationTargetException

public class NewPost {

WebDriver driver;

    public NewPost(WebDriver localdriver){
        this.driver = localdriver;
    }

    WebElement box=driver.findElement(By.xpath("//*[@id='menu-posts']/a")); 
    List<WebElement> links = box.findElements(By.tagName("a"));
    WebElement posts = links.get(1);


    @FindBy(how=How.XPATH, using="//*[@id='wpbody-content']/div[4]/h2/a")
    WebElement addNew;

    @FindBy(how=How.XPATH, using="//*[@id='title']")
    WebElement postTitle;

    @FindBy(how=How.XPATH, using="//*[@id='content']")
    WebElement content;

    @FindBy(how=How.XPATH, using="//*[@id='publish']")
    WebElement publishButton;

    @FindBy(how=How.ID, using="message")
    WebElement postPublishedMsg;

    public void addNewPost(String titleText, String contentText){

        posts.click();
        addNew.click();
        postTitle.sendKeys(titleText);
        content.sendKeys(contentText);
        publishButton.click();

        if(postPublishedMsg.getText().contains("Post published")){
            System.out.println("Post published successfully");
        }


    }


}

测试类:

@Test
public class VerifyNewPost {

    public void checkNewPost(){

        WebDriver driver = BrowserFactory.startBrowser("firefox", "http://demosite.center/wordpress/wp-login.php");

        LoginPageNew login_page = PageFactory.initElements(driver, LoginPageNew.class);

        login_page.loginWordpress("admin", "demo123");

        NewPost post = PageFactory.initElements(driver, NewPost.class);

        post.addNewPost("This is new post title", "This is new Post content");


    }
}

2 个答案:

答案 0 :(得分:0)

要点击添加新按钮,您必须先将鼠标悬停在帖子链接上。

您可以使用Actions类实现此目的。

请试试这个:

WebElement postlink = driver.findElement(By.xpath("//a[contains(text(),'Posts')]"));
Actions action = new Actions(driver);
action.moveToElement(postlink);
// Click on 'Add New' button
driver.findElement(By.xpath("//li[@id='menu-posts']//a[contains(text(),'Add New')]")).click();

我没有使用Page Factory。对不起。

答案 1 :(得分:0)

以下是您的问题的答案:

  1. 进入Dashboard页面后,点击Posts链接,其中按照PageFactory的元素为:

    @FindBy(how=How.XPATH,using="//li[@id='menu-posts']/a")
    WebElement posts;
    
  2. 构建点击Posts链接的方法:

    public void click_Posts()
    {
        posts.click();
        System.out.println("Clicked on Posts on Dashboard page");
    }
    
  3. 现在从VerifyNewPost班级调用click_Posts()方法点击Posts链接。

  4. 保持观察,登录您所在的Dashboard页面后,您需要定义页面对象和相关方法。

  5. 点击Dashboard链接时,在Posts页面上,您将被重定向到Posts页面,您需要在该页面中定义页面对象和相关方法才能点击在Add New链接。

  6. 如果这回答你的问题,请告诉我。