无法在selinium java chrome浏览器中按ID或名称查找元素

时间:2018-06-06 06:48:50

标签: java google-chrome selenium-webdriver

   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找到元素

2 个答案:

答案 0 :(得分:0)

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

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();
        }
    }

答案 1 :(得分:0)

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

您应该按以下元素搜索:

这是按钮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元素来输入用户名和密码:

这是第h帧:

  <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()帧。(&#34; bcx_local_storage_frame&#34);

然后你的代码的其余部分

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

希望这有帮助,