首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在java selenium中使用POM-TestNG类中的SELECT语句

如何在java selenium中使用POM-TestNG类中的SELECT语句
EN

Stack Overflow用户
提问于 2015-12-15 16:39:02
回答 2查看 820关注 0票数 3

我困在Basic程序中,在这个程序中,如何在POM类中编写Select语句,以及另一个TestNG类调用POM类下面的POM类代码:

代码语言:javascript
运行
复制
package POM;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.Select;

public class LoginCRM {
    @FindBy(id="ctl00_ContentPlaceHolder1_PassiveIdentityProvidersDropDownList")
    private WebElement dropdown;

    @FindBy(id="ctl00_ContentPlaceHolder1_PassiveSignInButton")
    private WebElement sltbtn;

    @FindBy(id="ctl00_ContentPlaceHolder1_UsernameTextBox")
    private WebElement usrname;

    @FindBy(id="ctl00_ContentPlaceHolder1_PasswordTextBox")
    private WebElement password;

    @FindBy(id="ctl00_ContentPlaceHolder1_SubmitButton")
    private WebElement login_btn;

    public LoginCRM(WebDriver driver) {
        PageFactory.initElements(driver, this);
        // TODO Auto-generated constructor stub
    }

    public void login()
    {
        Select sel = new  Select(dropdown);
        sel.selectByVisibleText("HP Internal STS");

        sltbtn.click();
        usrname.sendKeys("r@gmail.com");
        password.sendKeys("@@@@@@@");
        login_btn.click();
    }

}

我正在获得NullPointerException at 选择语句的登录方法下面是TestNG类代码

代码语言:javascript
运行
复制
 @Test
  public void login() {
      LoginCRM log = new LoginCRM(driver);
      log.login();
  }

下面是HTML代码

代码语言:javascript
运行
复制
<form id="aspnetForm" action="/adfs/ls/?wa=wsignin1.0&wtrealm=https%3a%2f%2fppmss360.ford.qa.ams.hpmsdynamics.com%2f&wctx=rm%3d1%26id%3dd05e86a7-ae60-4d86-af91-c70fe89fb627%26ru%3dhttps%253a%252f%252fppmss360.ford.qa.ams.hpmsdynamics.com%252fdefault.aspx&wct=2015-12-15T16%3a42%3a34Z&wauth=urn%3aoasis%3anames%3atc%3aSAML%3a1.0%3aam%3apassword" method="post" name="aspnetForm">
<div>
<div>
<input type="hidden" value="14" name="__db"/>
<div class="MainArea">
<div class="Header">
<div class="GroupXLargeMargin">
<div class="GroupLargeMargin">
<div class="MainActionContainer">
<div class="GroupXLargeMargin">
<div class="GroupXXLargeMargin">
<select id="ctl00_ContentPlaceHolder1_PassiveIdentityProvidersDropDownList" name="ctl00$ContentPlaceHolder1$PassiveIdentityProvidersDropDownList">
<option value="http://corp.sts.ford.com/adfs/services/trust">Ford Corp STS</option>
<option value="https://mscrm00b.hpuscrmpoc.com/adfs/services/trust">HP Internal STS</option>
</select>
<div>
</div>
</div>

下面是堆栈跟踪中打印的异常

代码语言:javascript
运行
复制
[TestNG] Running:
  C:\Selenium Workspace\FMC360Automation\testng.xml

java.lang.NullPointerException
    at org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:69)
    at org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:38)
    at com.sun.proxy.$Proxy6.getTagName(Unknown Source)
    at org.openqa.selenium.support.ui.Select.<init>(Select.java:44)
    at POM.LoginCRM.login(LoginCRM.java:34)
    at Script.LoginMain.login(LoginMain.java:15)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:639)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:821)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1131)

如果有人需要.!:)

EN

Stack Overflow用户

发布于 2015-12-16 06:40:29

您没有在任何地方初始化WebDriver driver。将@BeforeTest方法添加到TestNG class中,如下所示。我尝试了您的代码与这个附加,它现在选择惠普内部STS。

代码语言:javascript
运行
复制
public class WebDriverTest  {       
    WebDriver driver;

    @BeforeTest
     public void setup(){

        driver = new FirefoxDriver();

        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

        driver.get("file:///C:/Users/dummyUser/Desktop/select_page.html");

    }
@Test
public void testLogin()
{
     LoginCRM log = new LoginCRM(driver);
     log.login();
    }

}
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34294661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档