java - 如果元素没有出现在selenium webdriver java中,如何重新加载页面
问题描述
有时由于超时或其他原因页面停止加载或被加载但注册页面没有出现,为了确保它出现我们必须刷新页面,我尝试了 driver.navigate.refresh(),我有尝试了显式等待和javascript执行程序,没有任何效果,我正在添加我尝试过的代码片段,但它也不起作用。一旦 findelement().isdisplayed 为假,我的脚本就会失败,它不会进入 if 循环。下面是代码-
for(int i=0;i<3;i++)
{
System.out.println("In for loop");
try
{
if(driver.findElement(byusername).isDisplayed())
{
System.out.println("Element found");
driver.findElement(byusername).sendKeys(username);
driver.findElement(bypassword).sendKeys(password);
driver.findElement(signIn).click();
System.out.println("Logged in");
basewait.until( ExpectedConditions.presenceOfElementLocated(Tab));
System.out.println("Wait completed, going to base class");
i=3;
}
else
{
System.out.println("Element not found"+i+" try");
driver.navigate().refresh();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
i++;
}
}
catch(NoSuchElementException e)
{
System.out.println(e);
}
解决方案
尝试替换:
if(driver.findElement(byusername).isDisplayed())
和:
if(driver.findElements(byusername).size() > 0 && driver.findElements(byusername).get(0).isDisplayed())
这不会抛出异常,你可以去else
声明。driver.findElements(byusername)
返回找到的元素列表,如果没有找到元素,则仅返回一个空列表。
推荐阅读
- c# - 异步等待与简单执行
- c++ - std::map< K, std::vector
> 分配 - android - 自 Oreo/API 26 起允许用户设置通知灯颜色
- javascript - 我正在创建一个系统,我的控制台说我的一个功能是未定义的
- macos - 如何在没有 ViewController 的情况下初始化内置于 Interface Builder(由 Xib 支持)的可重用 NSView
- sql - 处理运行总计中的空值
- ios - Xcode 分析仪器调用树无法识别我的源代码
- python - AttributeError:模块“vpython”没有属性“Modellearning”
- c# - 将对象动态转换回原来的样子
- javascript - javaScript(s) 是否会相互覆盖?