java - 有条件的自动化网络交互

标签 java selenium-webdriver

我有一个与网页交互、上传文件、提交文件并下载响应的脚本。最近,控制该网站的一方对其进行了某种更改。我正在努力适应这种变化,但我有一个症结所在。我正在使用 java 和 selenium 打开 Chrome 浏览器。页面打开。曾经有三个按钮 - 重置按钮、上传按钮和选择文件按钮。部分时间仍然是这种情况。

但是,有时当网站打开时,只有前 2 个按钮。我发现如果我手动单击上传按钮,页面会刷新并出现选择文件按钮。我现在正在尝试将其合并到我的代码中。这是问题所在...

    driver.get("http://apps.gdgps.net/apps_file_upload.php");
    System.out.println("test a");
    if (driver.findElement(By.cssSelector("input[class*='upfile_ultimo']"))!= null){
        System.out.println("test a - passed");
        driver.findElement(By.cssSelector("input[class*='upfile_ultimo']")).click();
    }else{
        System.out.println("test a - failed");
        driver.findElement(By.cssSelector("input[id='upload_button']")).click();
        driver.findElement(By.cssSelector("input[class*='upfile_ultimo']")).click();
    }

所以,我一直打印“test a”。如果存在选择文件按钮,我会看到“测试 - 通过”并且文件已上传。如果按钮不存在,我不会看到“测试 - 失败”,并且一切都会挂起。上传按钮永远不会被按下。

我不确定为什么这不起作用。我尝试将 upload_button 行移到 if 语句上方。它独立运行。当它放在 if 语句中时会有什么不同?

最佳答案

您不测试元素是否为null。如果您想查看某个元素是否存在,请使用 .findElements (注意复数)并测试返回的集合是否为空。如果为空,则未找到任何元素。

driver.get("http://apps.gdgps.net/apps_file_upload.php");
System.out.println("test a");
List<WebElement> upload = driver.findElements(By.cssSelector("input[class*='upfile_ultimo']"));
if (upload.isEmpty())
{
    System.out.println("test a - failed");
    driver.findElement(By.cssSelector("input[id='upload_button']")).click();
    driver.findElement(By.cssSelector("input[class*='upfile_ultimo']")).click();
}
else
{
    System.out.println("test a - passed");
    upload.get(0).click();
}

关于java - 有条件的自动化网络交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46717081/

相关文章:

java - 在 android 上使用 weka 库时出错(想在 Android 应用程序中实现机器学习)

java - For-Each 循环中的限制

java - 如何在 Selenium WebDriver 中检查邮件验证?

python - 使用 Selenium Python 接受 1 个位置参数,但 2 个出现错误

java - 如何从 Selenium/Ghostdriver 将参数传递给 PhantomJS 脚本

java - Java Postgresql 驱动程序是否支持数组数据类型,获取 NullPointerException

java - 什么是 Java 数据挖掘,JDM?

java - 如何使用ASM框架访问匿名内部类

python - 如何刷新已经打开的网页

python - 使用 Selenium 在 div 中进行内容搜索的问题