我正在尝试为this page编写一个异常测试: 这是我的pom.xml
<!-- https://mvnrepository.com/artifact/info.cukes/cucumber-picocontainer -->
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-picocontainer</artifactId>
<version>1.2.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.4.0</version>
</dependency>
以下是代码:
System.setProperty("webdriver.chrome.driver", "C:\\Driver\\chromedriver.exe");
driver = new ChromeDriver();
driver.get("http://www.behsad.com/nportal/Default.aspx?tabid=55");
driver.findElement(By.id("dnn_dnnUser_enhancedRegisterLink")).click();
WebDriverWait wait=new WebDriverWait(driver, 30);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(
By.id("dnn_dnnUser_enhancedRegisterLink")));
element.click();
driver.switchTo().frame("iPopUp");
driver.findElement(By.id("dnn_ctr_Register_userForm_Username_Username_TextBox"))
.sendKeys("Hey");
问题是它到了正确的地方,但它没有做任何事情。它坚持这个水平
我确定,我已经要求提供有效身份证明
dnn_ctr_Register_userForm_Username_Username_TextBox
但您可以告诉我为什么它不能写Hey
吗?
更新:此行
driver.findElement(By.id("dnn_dnnUser_enhancedRegisterLink")).click();
答案 0 :(得分:3)
在回答您的问题之前,请允许我指出,当浏览器打开页面时,页面加载需要一些时间。加载时,您的脚本会尝试查找标识为dnn_dnnUser_enhancedRegisterLink
的元素。在某些情况下,搜索此元素时可能会失败,因此我建议您添加等待元素变为可见。试试这个:
WebDriverWait wait=new WebDriverWait(driver, 30);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(
By.id("dnn_dnnUser_enhancedRegisterLink")));
element.click();
现在点击元素后,会出现一个弹出窗口。该弹出窗口位于iframe
内,因此您需要在搜索ID为dnn_ctr_Register_userForm_Username_Username_TextBox
的元素之前将Selenium的焦点切换为该焦点。 iframe
的ID为iPopUp
,因此在搜索元素之前执行此操作:
driver.switchTo().frame("iPopUp");
所以最终的代码应该是这样的:
driver.get("http://www.behsad.com/nportal/Default.aspx?tabid=55");
WebDriverWait wait = new WebDriverWait(driver, 30);
WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(
By.id("dnn_dnnUser_enhancedRegisterLink")));
element.click();
driver.switchTo().frame("iPopUp");
WebElement searchElement = wait.until(ExpectedConditions.visibilityOfElementLocated(
By.id("dnn_ctr_Register_userForm_Username_Username_TextBox")));
searchElement.sendKeys("Hey");
答案 1 :(得分:0)
我在浏览器中打开页面并使用控制台尝试使用javascript获取元素:
document.getElementById("dnn_ctr_Register_userForm_Username_Username_TextBox")
只是为了确保你对现有的id是正确的。