首页 文章

Selenium驱动程序查找元素不起作用

提问于
浏览
-1

Selenium Web驱动程序发现元素无法在网页上找到输入字段我按名称通过 CSS 尝试了每个选项 XPath . 关于本地环境的测试站点 .

HTML:

<input class="form-control ng-pristine ng-untouched ng-valid ng-empty" ng-model="email" placeholder="Username" aria-describedby="username" type="text">

xpath:/ html / body / div [2] / div / div / div [1] / div / div / div [2] / div / form / div [2] / div / div /输入css选择器:html . no-js.ng-scope body.pace-done.full-width div#wrapper div.page-wrapper.white-bg.ng-scope div.wrapper.wrapper-content.ng-scope div.login-bg.ng -scope div.container div.row div.col-sm-6.col-sm-offset-3.col-md-4.col-md-offset-4 div.login-form form.ng-pristine.ng-有效div.col-sm-12.plr10px div.form-group div.input-group input.form-control.ng-pristine.ng-untouched.ng-valid.ng-empty

driver.findElement(By.name("username"))

3 回答

  • 0

    以下是您的问题的答案:

    根据您提供的HTML,您可以使用以下 xpath 来识别元素 -

    WebElement element = driver.findElement(By.xpath("//input[@ng-model='email' and @placeholder='Username']"));
    

    如果您遇到 ElementNotVisible 异常,可以诱导 ExplicitWait 等待元素可点击,如下所示:

    WebDriverWait wait7 = new WebDriverWait(driver, 10);
    WebElement element7 = wait7.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@ng-model='email' and @placeholder='Username']")));
    element7.click();
    

    如果这回答你的问题,请告诉我 .

  • 0

    试试这个,这应该有效 .

    WebElement emailInput = new WebDriverWait(driver, 30).until(ExpectedConditions.presenceOfElementLocated(By.xpath("//input[ng-model='email']")));
    
  • 2
    JavascriptExecutor je = (JavascriptExecutor) driver;
    
    WebElement Username = driver.findElement(By.xpath("//*[@placeholder='Username' and @type='text'"]));
    
    je.executeScript("arguments[0].scrollIntoView(true);",Username);
    
    Username.sendKeys("Name");
    

相关问题