无法通过java客户端使用Selenium Webdriver单击输入类型提交
打开,尝试定位“下一步”导航按钮,单击或使用xpath或cssselector或其他方法提交,但不起作用。 (更新:找到了不使用任何查找元素方法的替代解决方案,但希望听取其他人的意见) 尝试过不同的定位器属性,但都不起作用,有什么想法吗无法通过java客户端使用Selenium Webdriver单击输入类型提交,java,selenium,xpath,css-selectors,webdriverwait,Java,Selenium,Xpath,Css Selectors,Webdriverwait,打开,尝试定位“下一步”导航按钮,单击或使用xpath或cssselector或其他方法提交,但不起作用。 (更新:找到了不使用任何查找元素方法的替代解决方案,但希望听取其他人的意见) 尝试过不同的定位器属性,但都不起作用,有什么想法吗 new WebDriverWait(driver,5).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"nav-controls\"]
new WebDriverWait(driver,5).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"nav-controls\"]/input")));
driver.findElement(By.xpath("//*[@id=\"nav-controls\"]/input")).click();`
html代码:
<div id="nav-controls" class="btn-container nav-center">
<input type="submit" name="_NNext" class="mrNext" style="" value="Next" alt="Next">
</div>
页面截图:
该按钮位于框架中,因此请先切换到框架(“大型机”),然后单击该按钮 您可以使用下面的代码来实现相同的功能
System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "\\src\\test\\resources\\executables\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.canadapostsurvey.ca/");
WebDriverWait wait = new WebDriverWait(driver, 30);
driver.switchTo().frame("mainFrame");
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id='nav-controls']/input")));
driver.findElement(By.xpath("//*[@id='nav-controls']/input")).click();;
driver.quit();
要在占位符为的元素中单击()
,请在url中选择用户名,因为所需元素位于
中,因此您必须:
- 诱导WebDriverWait使所需的框架可用并切换到它
- 将所需元素的WebDriverWait诱导为可禁用
- 您可以使用以下任一选项:
- 使用cssSelector:
- 使用xpath:
参考文献 您可以在以下内容中找到一些相关讨论:
driver.get("http://www.canadapostsurvey.ca/");
new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector("frame#mainFrame")));
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input[value='Next']"))).click();
driver.get("http://www.canadapostsurvey.ca/");
new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//frame[@id='mainFrame']")));
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@value='Next']"))).click();