我在登录测试方法中遇到奇怪的执行行为。我在selenium Grid下运行此代码。和Grid配置为独立服务器。因此,首先我使用批处理文件启动selenium网格(Hub \ Node)以通过测试执行。
以下是我的课程和规格。 码: 1. pojDataSource.java:
public class pojDataSource {
private static WebElement element = null;
private static List<WebElement> elements = null;
public static WebElement txt_UserName(WebDriver driver){
driver.findElement(By.id("txtUserName")).clear();
element = driver.findElement(By.id("txtUserName"));
return element;
}
public static WebElement txt_Password(WebDriver driver){
driver.findElement(By.id("txtPassword")).clear();
element = driver.findElement(By.id("txtPassword"));
return element;
}
}
clsConstant.java:
public class clsConstant {
public static final String URL = "http://localhost:1234/";
public static final String Username = "username";
public static final String Password = "password";
}
ModuleTest.java:
public class ModuleTest {
public RemoteWebDriver mDriver = null;
public DesiredCapabilities mCapability = new DesiredCapabilities() ;
public WebElement mWebElement = null;
public String mBaseURL = clsConstant.URL;
public static clsExcelSampleData mAddConnectorXls;
@Test
public void beforeMethod() throws Exception {
WebDriverWait wdw =null;
mCapability.setCapability("platform", org.openqa.selenium.Platform.WINDOWS);
mCapability = DesiredCapabilities.firefox();
mCapability.setVersion("45.0.2");
mDriver = new RemoteWebDriver(new URL("http://127.0.0.1:4444/wd/hub/"), mCapability);
mDriver.get(mBaseURL);
mDriver.manage().window().maximize();
pojDataSource.txt_UserName(mDriver).sendKeys(clsConstant.Username ) ;
pojDataSource.txt_Password(mDriver).sendKeys(clsConstant.Password ) ;
pojDataSource.btn_LogIn(mDriver).click();
}
当我在eclipese IDE中以DEBUG模式执行代码时,它会向我显示奇怪的行为。首先,它启动浏览器并使用登录屏幕成功打开mBaseURL。加载页面后,它在浏览器中显示默认的userName \ password。
现在当调试点到达pojDataSource.txt_UserName(mDriver).sendKeys(clsConstant.Username);线。按F5我的调试点转到pojDataSource.txt_Password();行,它获取错误的密码和脚本执行失败。我担心如果我的调试点是用户名,但仍然会获取密码值,会怎么回事?
尝试过的解决方案: 1.因为我使用Firefox浏览器来运行测试。我从浏览器中清除了我的密码。
答案 0 :(得分:0)
重新检查WebElements ID并确保在调试时WebDriver可以访问它们。还要尽量避免使用静态&#39;到WebElements。看看页面对象模式。