我是Web自动化的新手,我想从一个简单的问题开始。
我正在使用Chrome中的Selenium Webdriver。我测试的每个页面上都有一个按钮:
<button class="next_btn btn green">Btn</button>第一次我不得不写下面的语法来让它工作:
driver.findElement(By.xpath("//button[contains(.,'Btn')]")).click();其他xpath不起作用。下一次我不得不使用这个:
driver.findElement(By.xpath("//*[@id=\'formtop\']/div/form/div/fieldset[2]/div[2]/button[2]")).click();下一页上的相同按钮将不接受任何内容。
我试过了:
WebElement stupidBtn = driver.findElement(By.xpath("//*[@id=\'formtop\']/div/form/div/fieldset[3]/div[2]/button[2]"));
stupidBtn.click();
driver.findElement(By.xpath("//*[@id=\'formtop\']/div/form/div/fieldset[3]/div[2]/button[2]")).click();
WebElement stupidBtn = driver.findElement(By.xpath("//*[@id=\'formtop\']/div/form/div/fieldset[3]/div[2]/button[2]"));
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", stupidBtn);
WebElement stupidBtn = driver.findElement(By.id("//*[@id=\'formtop\']/div/form/div/fieldset[3]/div[2]/button[2]"));
Actions buildAct = new Actions(driver);
buildAct.moveToElement(stupidBtn).click(stupidBtn);
buildAct.perform();
driver.findElement(By.cssSelector("#formtop>div>form>div>fieldset:nth-child(3)>div.multiform_buttons>button.next_btn.btn.green")).click();一般来说,我想知道我不理解的是什么,为什么我不能像Katalon Automation Recorder那样总是使用相同的语法。不幸的是,KAR不能覆盖我所有的需求。
感谢和问候
发布于 2018-08-01 23:48:37
如果您所说的“页面”不是真正的页面转换,但每次按下“下一步”按钮都会动态更新同一页面,那么您所描述的行为可能会发生。
我在过去见过多个“多页”表单,它们都在同一个页面上,但根据用户所在表单的哪个部分显示和隐藏不同的“页面”。
因此,当您尝试使用第二个按钮上的第一个定位器时,它仍然定位第一个定位器,尝试与其交互,并抛出元素不可见/无法交互的异常。
在过去,我为此构建了基于使用findElements的解决方案,然后循环这些元素以单击当前显示的元素。
ArrayList<WebElement> elements = (ArrayList<WebElement>) driver.findElements(By.xpath("//button[contains(.,'Btn')]"));
for(WebElement element : elements) {
if(element.isDisplayed()) {
element.click();
}
}如果没有看到页面,我不能说这是否是肯定的情况,但这是一种可能性。
发布于 2018-08-01 23:12:39
查询如果"next_btn“类只链接到该按钮,那么您就知道它是该元素的可靠唯一定位器。在这种情况下,我建议您直接引用该类,以获得您正在查找的元素,如下所示……
driver.findElement(By.cssSelector(".next_btn")).click();发布于 2018-08-01 23:49:46
为了能够捕获按钮并使其工作,您需要在Web浏览器中看到DOM,并检查是否放置了正确的xpath。每个页面中的HTML都可能与其他页面不同,这就是selenium找不到按钮的原因,Selenium检查您的DOM以查看元素,如果它存在,则可以使用按钮。
https://stackoverflow.com/questions/51636594
复制相似问题