我已经用selenium编写了一个自动化测试用例来测试登录页面,应该点击忘记密码链接。浏览器打开并转到给定的url,但忘记密码链接不会自动点击,有人能告诉我的代码有什么问题吗。
基本代码
public class Forgetpsw {
WebDriver driver;
@BeforeTest
public void Browseropen() throws Exception {
Browsers startup=new Browsers();
startup.Initiating();
}
@Test
public void Forget(String username) throws Exception{
driver.findElement(By.xpath("//*[text()='Forgot Password?']")).click();
Thread.sleep(3000L);
driver.findElement(By.xpath("//*[@placeholder='User ID'][@id='forgotPasswordForm:j_idt13:0:username']")).sendKeys(username);
}
}
Browsers.java
public class Browsers {
public WebDriver driver;
public void Initiating() throws IOException {
Properties prop= new Properties();
InputStream fis = new FileInputStream("D:\\Workspace\\TMS\\selenium\\ZLive\\src\\datadriven.properties");
prop.load(fis);
System.out.println("Initiating Browser");
if (prop.getProperty("browser").equals("firefox"))
{
driver=new FirefoxDriver();
}
else
{
System.setProperty("webdriver.chrome.driver", "D:\\selenium\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
}
driver.manage().window().maximize();
driver.get(prop.getProperty("url"));
}
}
数据属性
browser=firefox
url=http://abcd.xxx.in/login
username=32131
pasword=32131
控制台:
[TestNG] Running:
C:\Users\ds\AppData\Local\Temp\testng-eclipse-42991103\testng-customsuite.xml
Initiating Browser
===============================================
Default test
Tests run: 0, Failures: 0, Skips: 0
===============================================
===============================================
Default suite
Total tests run: 0, Failures: 0, Skips: 0
===============================================
超文本标记语言代码
<div class="loginRelative" id="secondDiv"><label class="loginText">Transport Management System</label>
<div class="logo-div">
<div class="loginimageBgStyle"><img src="images/indexImg.png" /></div>
</div>
<div class="absoluteLeft"></div>
<div class="absoluteRight"></div><span id="loginForm:loginPanel"><div id="loginForm:messages" class="ui-messages ui-widget errorValidationStyle" aria-live="polite"></div>
<div class="controls loginTextbox" id="thirdDiv"><div id="loginForm:j_idt16:0:j_idt18" class="ui-outputpanel ui-widget"><input id="loginForm:j_idt16:0:username" name="loginForm:j_idt16:0:username" type="text" placeholder="User ID" class="ui-inputfield ui-inputtext ui-widget ui-state-default ui-corner-all" /><script id="loginForm:j_idt16:0:username_s" type="text/javascript">PrimeFaces.cw("InputText","widget_loginForm_j_idt16_0_username",{id:"loginForm:j_idt16:0:username",widgetVar:"widget_loginForm_j_idt16_0_username"});</script></div>
</div><div id="loginForm:j_idt16:0:j_idt20" aria-live="polite" class="ui-message ui-helper-hidden"></div><script id="loginForm:j_idt16:0:j_idt20_s" type="text/javascript">$(function(){PrimeFaces.cw("Message","widget_loginForm_j_idt16_0_j_idt20",{id:"loginForm:j_idt16:0:j_idt20",widgetVar:"widget_loginForm_j_idt16_0_j_idt20",target:"loginForm:j_idt16:0:username"});});</script>
<div class="controls loginPassword"><div id="loginForm:j_idt16:0:j_idt22" class="ui-outputpanel ui-widget"><input id="loginForm:j_idt16:0:password" name="loginForm:j_idt16:0:password" type="password" class="ui-inputfield ui-password ui-widget ui-state-default ui-corner-all" placeholder="******" /><script id="loginForm:j_idt16:0:password_s" type="text/javascript">$(function(){PrimeFaces.cw("Password","widget_loginForm_j_idt16_0_password",{id:"loginForm:j_idt16:0:password",widgetVar:"widget_loginForm_j_idt16_0_password"});});</script></div>
<!-- <p:keyboard id="" value="" >
</p:keyboard> -->
</div><div id="loginForm:j_idt16:0:j_idt24" aria-live="polite" class="ui-message ui-helper-hidden"></div><script id="loginForm:j_idt16:0:j_idt24_s" type="text/javascript">$(function(){PrimeFaces.cw("Message","widget_loginForm_j_idt16_0_j_idt24",{id:"loginForm:j_idt16:0:j_idt24",widgetVar:"widget_loginForm_j_idt16_0_j_idt24",target:"loginForm:j_idt16:0:password"});});</script>
<div><a href="/forgotPassword" class="forgotPwdStyle">Forgot Password?</a>
</div>
<div class="loginBtnBgStyle"><button id="loginForm:j_idt28" name="loginForm:j_idt28" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only noBtnStyle" type="button"><span class="ui-button-icon-left ui-icon ui-c loginBtnImg"></span><span class="ui-button-text ui-c">ui-button</span></button><script id="loginForm:j_idt28_s" type="text/javascript">PrimeFaces.cw("CommandButton","widget_loginForm_j_idt28",{id:"loginForm:j_idt28",widgetVar:"widget_loginForm_j_idt28"});</script><button id="loginForm:loginButton" name="loginForm:loginButton" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only loginBtnStyle" onclick="return loginTms();;" type="button"><span class="ui-button-text ui-c">Login</span></button><script id="loginForm:loginButton_s" type="text/javascript">PrimeFaces.cw("CommandButton","widget_loginForm_loginButton",{id:"loginForm:loginButton",widgetVar:"widget_loginForm_loginButton"});</script>
</div></span><script type="text/javascript">loginTms = function() {PrimeFaces.ab({s:'loginForm:j_idt30',f:'loginForm',u:'loginForm',pa:arguments[0]});}</script>
<script>
function TMS_onLoginBtnClick(){
//alert("localhostinnnn");
var payroll = $("#payrollIframe").contents();
payroll.find("#username").val(document.getElementById("loginForm:j_idt15:0:username").value);
payroll.find("#password").val(document.getElementById("loginForm:j_idt15:0:password").value);
payroll.find("#user_accounts")[0].submit();
return false;
}
/**
This method will be called from payroll
iframe after success full login
*/
function loginSuccess(){
//alert("logged in");
//TODO: handle here
loginTms();
}
function loginFail(){
//TODO: handle here
}
</script>
<iframe id="payrollIframe" src="http://localhost/GOPayroll/?source=1" style="opacity:0; height:1px; width:1px;">
</iframe>
<div class="logoutMsgStyle">
</div>
</div>
</div>
在initialing()方法中,必须像这样返回驱动程序。
public WebDriver Initiating() throws IOException {
//your code
return driver
}
使用这个返回的驱动程序
@BeforeTest
public void Browseropen() throws Exception {
Browsers startup=new Browsers();
this.driver = startup.Initiating(); //your declared driver will get the initialized driver.
}
希望这对你有帮助。
在初始化
方法中,需要返回驱动程序对象,并将其存储在Forgetpsw类中。
public void Initiating() throws IOException {
Properties prop= new Properties();
InputStream fis = new FileInputStream("D:\\Workspace\\TMS\\selenium\\ZLive\\src\\datadriven.properties");
prop.load(fis);
System.out.println("Initiating Browser");
if (prop.getProperty("browser").equals("firefox"))
{
driver=new FirefoxDriver();
}
else
{
System.setProperty("webdriver.chrome.driver", "D:\\selenium\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
}
driver.manage().window().maximize();
driver.get(prop.getProperty("url"));
return driver; //return the driver object.
}
而browservepen
方法将如下所示:,
public void Browseropen() throws Exception {
Browsers startup=new Browsers();
driver = startup.Initiating();
}
我想点击element with href删除FB组中的挂起的帖子,但是selenium在第二个之后崩溃。使用相同的循环,我可以添加帖子到组没有任何问题;“Delete Button”列表是有效的,因为当我尝试时,我会得到真实的位置。 线程“main”org.openqa.selenium.elementNotinteractableException:构建信息:版本:'3.4.0',修订:'un
我们已经更新到最新的Selenium版本3.141.59并且发现点击不起作用。我没有得到一个错误消息,表明单击失败,并移动到下一个函数或行。我已经验证了它在Chrome、Firefox和Edge上不起作用。我们的代码是用Java编写的。 在单击元素之前添加等待时间 操作 JavaScriptExecutor 如有任何帮助,我们将不胜感激!
我遇到了一个问题 我在谷歌上搜索了这个https://www.google.com/search?q=sen做 上面的链接也是如此,使用了下面的代码,但它只返回https://www.sendo.vn/(缺少参数) 这是密码 任何解决方案,以获得完整的网址路径与硒像手动点击?
我正在使用selenium webdriver在我的网站上执行自动化。我可以登录网站,但不能对元素执行点击操作。我的代码尝试是: 我还尝试了javascript executor,如下所示: 现在我在控制台得到异常,比如: 如果有其他解决方案,请告诉我。
问题内容: 我正在尝试自动执行Google云端硬盘中的上传文件功能。 用于传递参数的元素以高度-0px隐藏。 用户操作均不会使该元素可见。因此,我需要一种变通方法来在不可见的元素上单击。 上述元素的xpath是- 我在用 例外- 元素当前不可见,因此可能无法与之交互。 我尝试使用JavascriptExecutor。但是找不到确切的语法。 问题答案: 试试这个: 上面的那堆将改变文件输入控件的可见
问题内容: 嗨,我想知道如何使用Selenium WebDriver单击隐藏元素和/或禁用元素。 我知道使用selenium1可以执行以下操作: 这将起作用,但是对于selenium2(WebDriver),则不起作用。我不想使用jquery来启用或显示隐藏字段或JavaScript。这是因为大多数测试都使用xpath。 还是我只需要保留旧的selenium,就可以单击隐藏的字段? 问题答案: 使