我的程序未能找到登录页面下一页中的pass-code
字段,因此,我尝试通过以下方式找到它(代码段显示)。
我已经尝试过将等待时间增加到100,但是它也不起作用。
它显示为程序停止在密码字段中,甚至没有到达sing-in
按钮。
收到错误消息:
org.openqa.selenium.TimeoutException:预期条件失败:等待By.xpath定位的元素的可见性:// input [@ id ='user-passcode'](尝试10秒钟(500毫秒))时间间隔)org.openqa.selenium.support.ui.WebDriverWait.timeoutException(WebDriverWait.java:81)
无论代码在哪里,它总是显示为在81中失败...
WebElement unfield = driver.findElement(By.xpath("//input[@id='user-name']"));
Actions actions = new Actions(driver);
actions.moveToElement(unfield).click();
unfield.clear();
unfield.sendKeys("test");
driver.findElement(By.xpath("//input[@id='user-password']")).clear();
driver.findElement(By.xpath("//input[@id='user-password']")).sendKeys("test");
WebElement test = driver.findElement(By.xpath("(.//*[normalize-space(text()) and normalize-space(.)='SIGN IN'])[1]/following::button[1]"));
Actions actions_signinclick = new Actions(driver);
signinclick_buttonclick .moveToElement(test).click();
//this will display in next page
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@id='user-passcode']")));
driver.findElement(By.xpath("//input[@id='user-passcode']")).click();
driver.findElement(By.xpath("//input[@id='user-passcode']")).clear();
driver.findElement(By.xpath("//input[@id='user-passcode']")).sendKeys("1234");
WebDriverWait submit_button = new WebDriverWait(driver, 100);
submit_button.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//BUTTON[@_ngcontent-wks-c3=''][text()='SUBMIT']/self::BUTTON")));
driver.findElement(By.xpath("//BUTTON[@_ngcontent-wks-c3=''][text()='SUBMIT']/self::BUTTON")).click();
请帮助我找到解决方案。
答案 0 :(得分:1)
请尝试这个。
更改此行:
signinclick_buttonclick .moveToElement(test).click();
成为:
signinclick_buttonclick.moveToElement(test).click().build().perform();
然后将定位器//input[@id='user-passcode']
更改为//*[@id='user-passcode']
:
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='user-passcode']")));
driver.findElement(By.xpath("//*[@id='user-passcode']")).click();