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