gpt4 book ai didi

java - Selenium Webdriver - 无法单击按钮 - 查找元素

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:09:39 25 4
gpt4 key购买 nike

希望有人能帮我解决我的问题。我花了一天的大部分时间尝试在这里和通过 Google 找到的几乎所有解决方案。

我会切入正题。我有一个在一个屏幕上登录的测试。第二个屏幕选择一个角色并继续。我能够进入角色选择屏幕,但无法继续前进,因为无论我做什么,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();

这也不行。我已经尝试了几种变体,大多数情况下,网络驱动程序要么超时,要么跳过这一步,通过它,然后由于页面没有向前移动而在接下来的步骤中失败。

有人有什么建议吗?如果您有任何疑问,或者如果我没有提供足够的信息,我可以为您提供更多信息!任何对此的帮助都将是惊人的,因为我一天中大部分时间都在努力解决这个问题。

谢谢!

最佳答案

有时选择器是这种情况下的主要问题。此外,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();

关于java - Selenium Webdriver - 无法单击按钮 - 查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30629400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com