我正在尝试使用 Selenium WebDriver、Java、Junit 和 Cucumber BDD 来自动化一个航空公司 Web 应用程序。我能够创建一个简单的场景,例如选择带有出发日期的单程航类,然后选择座位,然后进入付款页面。我能够编写所有测试步骤,直到到达付款页面。 Selenium 成功对所有页面中的所有元素执行操作,但对支付页面中的任何元素执行操作均失败。我尝试了隐式等待和显式等待但没有使用。最初,当我在 Selenium 能够在“付款”页面上执行操作后运行测试时,以及当我尝试多次再次运行测试但由于“NoSuchElementException”而测试失败时。支付页面上的一些元素如下:
Select choice = new Select(driver.findElement(By.xpath("//select[contains(@id,'title')]")));
choice.selectByVisibleText("Mr");
driver.findElement(By.xpath("//div[contains(@class,'payment-passenger-first-name')]"))/input)).sendKeys("John");
我使用的隐式等待是:
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
我使用的explicitWait是:
WebElement element = new WebDriverWait(driver,20).until(ExpectedConditions.presenceOfElementLocated(By.xpath("elementlocation")));
Selenium 在付款页面上找不到任何元素,而不仅仅是上述元素。我不知道到底是什么问题。 有人可以为我提供解决这个问题的最佳解决方案吗?
最佳答案
如果元素写在 iframe 标记内,那么在您先切换到框架之前,selenium 不会找到这些元素。 切换框架的命令(driver.switchto().frame(Framename))
关于java - Selenium WebDriver 找不到页面上的任何元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40951922/