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

时间:2017-07-18 08:03:56

标签: selenium webdriver

Selenium网络驱动程序发现元素无法在网页上找到输入字段我按名称XPath通过CSS尝试了每个选项<input class="form-control ng-pristine ng-untouched ng-valid ng-empty" ng-model="email" placeholder="Username" aria-describedby="username" type="text"> 。关于当地环境的测试网站。

HTML:

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

的xpath:

     

/ HTML /体/格[2] / DIV / DIV / DIV [1] / DIV / DIV / DIV [2] / DIV /形式/ DIV [2] / DIV / DIV /输入

     

css选择器:

     

html.no-js.ng-scope body.pace-done.full-width div #wrapper   div.page-wrapper.white-bg.ng-范围   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-valid div.col-sm-12.plr10px div.form-group   div.input组   input.form-control.ng-pristine.ng-untouched.ng-valid.ng空

dist\index.html

3 个答案:

答案 0 :(得分:2)

以下是您的问题的答案:

根据您提供的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();

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

答案 1 :(得分:0)

试试这个,这应该有用。

access_control:
            - { path: ^/registration-form-submission$, role: IS_AUTHENTICATED_ANONYMOUSLY }
            - { path: ^/(login|register)$, role: IS_AUTHENTICATED_ANONYMOUSLY }
            - { path: ^/, role: ROLE_USER }

答案 2 :(得分:0)

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");