<input type="submit" value="Add New Date of Commencement of Contract Details for INDoS No. : 09HL9630" onclick="method.value='loadFrom3A'" xpath="1">
这是inspect元素中的内容,这是我尝试过的内容,但是没有用。 Xpath不能工作,因为它以循环形式更改。请帮助
public void addnew_date() {
driver.findElement(By.cssSelector("input[type='submit']").click();
driver.manage().timeouts().pageLoadTimeout(40,TimeUnit.SECONDS);
driver.manage().timeouts().implicitlyWait(40,TimeUnit.SECONDS);
}
答案 0 :(得分:0)
请在xpaths下使用它。
Xpath的:
1. //input[@type='submit']
2. //input[contains(text(),'Add New Date of Commencement')]
public void addnew_date() {
driver.findElement(By.xpath("//input[@type='submit']").click();
}
Implicitwait和Pageloadtimeout应该在测试开始时使用,即在创建webdriver对象即驱动程序之后。
类似:
System.setProperty("webdriver.chrome.driver",".\\drivers\\chromedriver.exe");
WebDriver driver = new ChromeDriver(options);
driver.get("https://www.google.com");
driver.manage().timeouts().pageLoadTimeout(40,TimeUnit.SECONDS);
driver.manage().timeouts().implicitlyWait(40,TimeUnit.SECONDS);
答案 1 :(得分:0)
您需要将WebDriverWait与ExpectedConditions一起归为elementToBeClickable(),并且可以使用以下Locator Strategy:
xpath
:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[starts-with(@value, 'Add New Date of Commencement of Contract Details') and contains(@onclick, 'loadFrom3A')]"))).click();
答案 2 :(得分:0)
有可能存在预期的元素,但无法单击或显示该元素,从而引发了所述异常。需要确定实际原因。尝试以下方式进行调试:
请确保您只有一个带有定位符input[type='submit']
的元素,并且可能还有一些其他其他带有提交类型的输入标签,并且它们可能是第一个且很难处理的。因此需要通过添加一些周围的元素或属性使其更加具体
例如//input[type='submit'][contains(@value,'Add New Date')]
执行元素当前状态的检查,例如
List<WebElement> button = driver.findElements(By.cssSelector("input[type='submit']");
System.out.println(button.size()) // 1 means element present 0 means no element and other count mean number of element
if(button.size()==1){ // check element is present
if(button.get(0).isDisplayed()){ // check element is visible
System.out.println("element is present and displaying");
button.get(0).submit();
}else{
System.out.println("element is present but not displaying");
}
else if (button.size()>1){
System.out.println("there are multiple element with same locator");
} else {
System.out.println("element not present for the locator");
}
如果元素需要一些时间才能进行交互,请明智地使用硒等待条件
隐式等待示例:
System.setProperty("webdriver.chrome.driver",".\\drivers\\chromedriver.exe");
WebDriver driver = new ChromeDriver(options);
driver.get("website_URL");
driver.manage().timeouts().implicitlyWait(40,TimeUnit.SECONDS);
ExplicitWait示例:
WebElement button = driver.findElement(By.xpath("//input[type='submit'][contains(@value,'Add New Date')]"));
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.visibilityOf(button)).click();
您可以尝试使用.submit()
方法,因为该元素是提交类型,也可以使用JavascriptExecuter
来执行点击
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("arguments[0].click();", button);