Selenium webdriver 为什么此代码显示错误,而按钮位于“通过代码”字段的右侧?
我试着找到按钮,然后按下面给出的代码点击。我使用的其他方法也会在代码底部进行注释 错误说明代码末尾的Submit按钮无法按代码定位。 当按钮能够定位并单击时,为什么会显示这些错误?请帮助我找到解决方案Selenium webdriver 为什么此代码显示错误,而按钮位于“通过代码”字段的右侧?,selenium-webdriver,xpath,automated-tests,katalon-studio,Selenium Webdriver,Xpath,Automated Tests,Katalon Studio,我试着找到按钮,然后按下面给出的代码点击。我使用的其他方法也会在代码底部进行注释 错误说明代码末尾的Submit按钮无法按代码定位。 当按钮能够定位并单击时,为什么会显示这些错误?请帮助我找到解决方案 WebElement unfield =driver.findElement(By.xpath("//input[@id='user-name']")); Actions actions = new Actions(driver); actions.moveToElement(unf
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);
actions_signinclick .moveToElement(test).click().build().perform();
//this will display in next page
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='user-passcode']")));
driver.findElement(By.xpath("//*[@id='user-passcode']")).click();
driver.findElement(By.xpath("//*[@id='user-passcode']")).clear();
driver.findElement(By.xpath("//*[@id='user-passcode']")).sendKeys("1234");
WebDriverWait submit_button = new WebDriverWait(driver, 60);
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();
/*WebElement test1 = driver.findElement(By.xpath("//BUTTON[@_ngcontent-wks-c3=''][text()='SUBMIT']/self::BUTTON"));
Actions actions_submitclick = new Actions(driver);
actions_submitclick .moveToElement(test1).click().build().perform();*/
错误显示如下:
org.openqa.selenium.TimeoutException:预期条件失败:等待位于by.xpath://BUTTON[@_-ngcontent-wks-c3=''][text()='SUBMIT']/self::BUTTON的元素的可见性(每隔500毫秒尝试60秒)
位于org.openqa.selenium.support.ui.WebDriverWait.timeoutException(WebDriverWait.java:81)
如果你在寻找上面两行的区别
在第一行中,visibility of ElementLocated用于检查DOM上是否存在元素,以及是否存在可见性。要检查可见性,请确保元素的高度和宽度大于0。
在您的例子中,可能元素存在于DOM中,但不可见,因此您将得到异常。
在第二行中,您只需单击DOM上的元素,就可以传递它
如果你在寻找上面两行的区别
在第一行中,visibility of ElementLocated用于检查DOM上是否存在元素,以及是否存在可见性。要检查可见性,请确保元素的高度和宽度大于0。
在您的例子中,可能元素存在于DOM中,但不可见,因此您将得到异常。
在第二行中,您只需单击DOM上的元素,就可以传递它 谢谢你的回复。我也参考了你的链接。但是当我试图直接定位它(driver.findelelement(By.xpath…)时,它不起作用,它还会抛出一条错误消息,说“找不到元素”。这就是我尝试上面的注释代码的原因。是否有办法解决此问题?您使用的是哪种浏览器?您尝试过css吗?您的xpath在浏览时计算是否正确?xpath中有一个错误,我已经重写了它并尝试了代码,现在运行良好。再次感谢您。作为业内资深人士,如果你可以在这里添加一些建议>谢谢你的回复。我也参考了你的链接。但是当我试图直接定位它时,它不起作用(driver.findelelement(By.xpath…),它还抛出一条错误消息说“找不到元素”。这就是我尝试上面的注释代码的原因。是否有办法解决此问题?您使用的是哪种浏览器?您尝试过css吗?您的xpath在浏览时计算是否正确?xpath中有一个错误,我已经重写了它并尝试了代码,现在运行良好。再次感谢您。作为业内资深人士,如果您可以在此处添加一些建议>
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();