【问题标题】:Not able to find the element by id or name in selinium java chrome browser在 selenium java chrome 浏览器中无法通过 id 或名称找到元素
【发布时间】:2018-06-06 06:48:50
【问题描述】:
   public class Bwinbe {
            public static void main(String[] args) {    
                System.setProperty("webdriver.chrome.driver", "mypath");
                WebDriver driver = new ChromeDriver();
                driver.get("http://test.www.bwin.be/");
                WebDriverWait wait = new WebDriverWait(driver,20);

                driver.findElement(By.id("login-overlay-button")).click();
                driver.findElement(By.id("username")).sendKeys("passport3");
                    driver.findElement(By.id("password")).sendKeys("qwe123");
                driver.findElement(By.id("submit")).click();
        }
    }

运行时出现异常。它无法通过名称或 id 找到元素

【问题讨论】:

  • 线程“主”org.openqa.selenium.NoSuchElementException 中的异常:没有这样的元素:无法找到元素:{“method”:“id”,“selector”:“username”}(会话信息:chrome=66.0.3359.181)(驱动程序信息:chromedriver=2.39.562718(9a2698cba08cf5a471a29d30c8b3e12becabb0e9),平台=Windows NT 10.0.14393 x86_64)(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:0毫秒
  • Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 2.39.562718 (9a2698cba08cf5..., userDataDir: C:\Users \ivy4326\AppData\Lo...},cssSelectorsEnabled:true,databaseEnabled:false,handlesAlerts:true,hasTouchScreen:false,javascriptEnabled:true,locationContextEnabled:true,mobileEmulationEnabled:false,nativeEvents:true,networkConnectionEnabled:false,pageLoadStrategy:正常,平台:XP,平台名称:XP,
  • 使用 edit 选项更新您的问题,而不是发布 cmets
  • 不要堵塞评论部分,让您的堆栈跟踪受到质疑?请提供一些 Html。
  • @Chandru 请使用正确的详细信息正确更新您的问题,哪个元素出现错误。

标签: java google-chrome selenium-webdriver


【解决方案1】:

点击登录按钮后,您可能需要等待一段时间。以下代码可能适合您。

public class Bwinbe {
     public static void main(String[] args) {    
         System.setProperty("webdriver.chrome.driver", "mypath");
         WebDriver driver = new ChromeDriver();
         driver.get("http://test.www.bwin.be/");
         WebDriverWait wait = new WebDriverWait(driver,20);

         driver.findElement(By.id("login-overlay-button")).click();
         wait.until(ExpectedConditions.elementToBeClickable(By.id("username")));
         driver.findElement(By.id("username")).sendKeys("passport3");
         driver.findElement(By.id("password")).sendKeys("qwe123");
         driver.findElement(By.id("submit")).click();
        }
    }

【讨论】:

  • 非常感谢朋友。这行得通。不得不再添加一段代码,它运行顺利
  • wait.until(ExpectedConditions.elementToBeClickable(By.id("submit")));
【解决方案2】:

正如我看到的页面,您正在尝试自动化,您正在尝试使用按钮登录。

您应该按此元素搜索:

这是按钮 html:

<a class="btn-s1" data-loading="Loading..." href="/en/authentication/loginoverlay" id="login-overlay-button" onclick="return false;" data-hasqtip="true" aria-describedby="qtip-0">LOG IN</a>

所以尝试使用搜索

driver.findElement(By.className("btn-s1")).click();

然后你必须切换到 iFrame 元素来输入用户名和密码:

这是框架 html:

  <iframe id="bcx_local_storage_frame" src="https://assets.bounceexchange.com/assets/bounce/local_storage_frame9.min.html#2582" style="display: none;" kwframeid="1"></iframe>

命令是这样的:

driver.switchTo().frame("bcx_local_storage_frame");

然后是你的代码

   driver.findElement(By.id("username")).sendKeys("passport3");
   driver.findElement(By.id("password")).sendKeys("qwe123");
   driver.findElement(By.id("submit")).click();

希望这会有所帮助,

【讨论】:

  • 线程“主”org.openqa.selenium.NoSuchFrameException 中的异常:未按名称或 id 找到框架元素 bcx_local_storage_frame 构建信息:版本:'3.12.0',修订:'7c6e0b3',时间: '2018-05-08T15:15:03.216Z' 系统信息:主机:'IN01N01201',ip:'10.8.162.204',os.name:'Windows 10',os.arch:'amd64',os.version: '10.0',java.version: '1.8.0_121' 驱动程序信息:driver.version:在 org.openqa.selenium.remote.RemoteWebDriver$RemoteTargetLocator.frame(RemoteWebDriver.java:876) 上的 selinium.Bwinbe.main(Bwinbe) 未知.java:23)
猜你喜欢
  • 2020-05-19
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-20
  • 2021-10-18
  • 1970-01-01
  • 2016-12-30
相关资源
最近更新 更多