Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法通过java客户端使用Selenium Webdriver单击输入类型提交_Java_Selenium_Xpath_Css Selectors_Webdriverwait - Fatal编程技术网

无法通过java客户端使用Selenium Webdriver单击输入类型提交

无法通过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\"]

打开,尝试定位“下一步”导航按钮,单击或使用xpath或cssselector或其他方法提交,但不起作用。 (更新:找到了不使用任何查找元素方法的替代解决方案,但希望听取其他人的意见)

尝试过不同的定位器属性,但都不起作用,有什么想法吗

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