无法在Selenium Webdriver上单击Button(element) [英] Not able to click Button(element) on Selenium webdriver
本文介绍了无法在Selenium Webdriver上单击Button(element)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
无法在Selenium Webdriver上单击Button(元素).它没有显示此类元素异常.
Not able to click Button(element) on Selenium webdriver. It's showing no such element exception.
HTML:
<button id="datepicker-354-7412-title" class="btn btn-default btn-sm uib-title" tabindex="-1" ng-disabled="datepickerMode === maxMode" ng-click="toggleMode()" type="button" aria-atomic="true" aria-live="assertive" role="heading">
<strong class="ng-binding">August 2016</strong>
</button>
Java:
driver.findElement(By.xpath("//*[@id='flip-card']/div[2]/div/div[2]/div[2]/div[1]/div/div[2]/i")).click();
driver.manage().timeouts().implicitlyWait(05, TimeUnit.SECONDS);
//driver.findElement(By.xpath("//ul[@class='uib-datepicker-popup dropdown-menu ng-scope']/li/div/table/thead/tr/th/button[@id='datepicker-758-2620-title']/strong")).click();
//driver.findElement(By.xpath(".//*[@id='datepicker-961-3767-title']")).click();
//WebElement mm=driver.findElement(By.id("datepicker-1164-5186-title"));
//mm.click();
/*WebElement element=driver.findElement(By.xpath("//*[@id='datepicker-354-7412-title']"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click()", element); */
driver.findElement(By.xpath("//button[@id='datepicker-354-7412-title']/strong")).click();
推荐答案
ID可能是动态的,请尝试按包含datepicker
和title
The id might be dynamic, try to locate the button by partial id that contains datepicker
and title
driver.findElement(By.cssSelector("[id*='datepicker'][id*='title']")).click();
您还可以使用显式等待来确保按钮存在/可见,然后再单击它
You can also use explicit wait to make sure the button exist/visible before clicking on it
WebDriverWait wait = new WebDriverWait(driver, 10);
// visible
WebElement button = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("[id*='datepicker'][id*='title']")));
button.click();
// or exist
WebElement button = wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("[id*='datepicker'][id*='title']")));
button.click();
这篇关于无法在Selenium Webdriver上单击Button(element)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文