希望有人可以帮我解决问题。我花了大部分时间来尝试几乎我能在这里和谷歌找到的所有解决方案。
我会切入追逐。我有一个测试登录一个屏幕。第二个屏幕选择一个角色并继续前进。我能够进入角色选择屏幕,但无法继续前进,因为Selenium不会点击按钮,无论我做什么。
有趣的是,这将适用于IDE,但将代码导出到java并使用webdriver运行它也不起作用。这部分对我没有意义,因为我认为IDE导出应该很容易运行。我能看到的唯一区别是,webdriver启动了一个无轮廓的Firefox,而IDE正在我的个人资料上运行 - 不确定这与它有什么关系,但是想把它扔出去。
第一个按钮和第二个按钮之间的唯一区别是HTML中的自动聚焦命令。
<button data-submit-button="" class="btn" autofocus="" name="submit" type="submit">Go</button>
我尝试过在网络上找到的众多解决方案,我尝试过的最后一件事就是
new WebDriverWait(driver,120).until(ExpectedConditions.elementToBeSelected(By.name("submit")));
driver.findElement(By.name("submit")).click();
这也不起作用。我已经尝试了几种变体,大部分时间webdriver要么超时要么跳过这一步,传递它然后在后续步骤失败,因为页面没有向前移动。
有没有人有任何建议?如果您有任何问题,或者如果我没有给予足够的帮助,我可以给您更多信息!任何有关这方面的帮助都会令人惊讶,因为我花了大部分时间试图解决这个问题。
谢谢!
答案 0 :(得分:4)
有时选择器是这样的场景中的主要问题。此外,name="submit"
甚至不是一个非常安全的选择器,因为开发人员倾向于在表单中复制相同的属性。在不知道实际元素的情况下,我几乎可以告诉你问题是选择器。如果文本 Go 是该页面上按钮的唯一文本,请为以下xpath提供一个镜头
//button[@name='submit'][@type='submit'][contains(text(),'Go')]
完整实施应如下所示:
By xpath = By.xpath("//button[@name='submit'][@type='submit'][contains(text(),'Go')]");
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(xpath));
myDynamicElement.click();