selenium webdriver中的click命令无效
我最近刚刚将我的selenium IDE代码导出到selenium web驱动程序。我发现在IDE中工作的许多命令要么无法工作,要么SeleniumWeb驱动程序声称根本不支持。到目前为止,我一直在一次一个地解决这些问题,这不太理想 目前,我正在研究为什么单击按钮不能使用web驱动程序,而它以前在selenium IDE中工作过。我的浏览器是FF 13,操作系统是Ubuntu 代码片段selenium webdriver中的click命令无效,selenium,selenium-ide,selenium-webdriver,Selenium,Selenium Ide,Selenium Webdriver,我最近刚刚将我的selenium IDE代码导出到selenium web驱动程序。我发现在IDE中工作的许多命令要么无法工作,要么SeleniumWeb驱动程序声称根本不支持。到目前为止,我一直在一次一个地解决这些问题,这不太理想 目前,我正在研究为什么单击按钮不能使用web驱动程序,而它以前在selenium IDE中工作过。我的浏览器是FF 13,操作系统是Ubuntu 代码片段 WebElement loginButton = driver.findElement(By.name("su
WebElement loginButton = driver.findElement(By.name("submit"));
loginButton.click();
我以前试过
driver.findElement(By.name("submit")).click();
然而,上面这一行也失败了。元素正在被选中,但是它不会像我希望的那样让我们登录。我发现其他页面也有类似的问题,但他们的问题似乎是Internet Explorer而不是Firefox。我甚至不想去想将来会给我带来的问题
谢谢
附言。
关于在不丢失我编写的所有测试的情况下从selenium IDE迁移到selenium Webdriver的更好方法的提示也可以解决这个问题。您的两个版本的代码都没有问题。不管是什么原因造成的,都不是
你检查过你的定位器了吗?您的元素肯定有name=submit而不是id=submit?如果您确定元素存在,您可以尝试此操作来模拟click-If
。click()
不起作用
driver.findElement(By.name("submit")).sendKeys(Keys.RETURN);
或
谢谢大家的回答!我找到了一个解决方案,结果是我没有在我的问题中提供足够的代码 问题不在于click()函数,而在于我的项目中使用的cas身份验证。在Selenium IDE中,我的登录测试对以下位置执行了“打开”命令
/cas/login?service=https%1F%8FAPPNAME%2FMOREURL%2Fj_spring_cas_security
成功了。我将测试导出到SeleniumWebDriver,它自然地保留了那个位置。Selenium Webdriver中的命令为
driver.get(baseUrl + "/cas/login?service=https%1A%2F%8FAPPNAME%2FMOREURL%2Fj_spring_cas_security");
由于种种原因,我还没有理解上述失败的原因。当我把它改成
driver.get(baseUrl + "MOREURL/");
单击命令突然开始工作。。。如果我能弄清楚这到底是为什么,我会编辑这个答案
注意:为了保护我公司的产品,我模糊了上面使用的URL。我使用的是firefox,出于某种原因,它没有使用click命令,尽管在过去的2个月里它一直在工作。 我的感觉是使用sendKeys,这个页面解决了这个问题。现在我正在使用sendKeys(key.Enter)请参阅此处 关键 请打开系统显示设置并确保字体大小设置为100%
它的效果出人意料需要注意的一个主要问题是按钮是否启用。你仍然可以点击它们,没有任何东西会掉下来,元素就在那里,但它还没有准备好被点击,所以什么都不做 我一直在使用webdriver,花了我一整天的时间才弄明白这一点 以下方法似乎工作可靠(在我的环境中,只需一个按钮!) 你用它来形容
TryClick(By.XPath("//button[contains(.//*,'Some Text')]"));
这是chromedriver(在2020年仍然存在)的产品
在Chrome中,我将缩放比例从90%改为100%,解决了这个问题
我发现lifeofsteve更可靠。我正在使用EasyRepro,当我调试代码时,它只是单击了可见且已启用的元素,没有按预期导航。但我终于明白了问题的根本原因 我的Chrome浏览器缩小了90% 当我重置缩放级别后,它单击了正确的元素并成功导航到下一页。
WebElement.click()
如果页面被放大或缩小,则单击被发现不起作用
我把我的页面缩小到85%
如果使用(ctrl
++
和ctrl
+-
)将浏览器中的页面缩放重置为100%,则单击将开始工作
chrome版本86.0.4240.111发现问题您是否尝试
断言loginButton.isDisplayed()代码>?当您说click()操作失败时?您是否收到任何错误或异常。请发布这些错误或异常,以了解单击()操作失败的原因。@PavelJanicek任何一个都可以执行此操作,但经过编辑以显示这两个操作;)哇!我不知道这件事。这些命令对我很管用。虽然后来证明我的问题与CAS身份验证有关。谢谢你的回答@我爱死它了!甚至对屏幕边界之外的元素也这样做@lifeofsteve-输入、返回、空格、JavaScript执行器、操作-这些对我来说都不起作用。如果我在单击之前稍等片刻,它就会起作用。该元素似乎没有被禁用。所以,我不知道为什么需要等待。你说它在IE上失败了,而不是在firefox上。是否确定此情况仅由位置引起?请编辑原始问题,而不是发布更新作为答案。这是评论,不是答案。为什么这是投票?
private void TryClick(By selector)
{
var wait = WaitUpTo(TimeSpan.FromSeconds(10));
var element = wait.Until(ExpectedConditions.ElementIsVisible((selector)));
//really important bit!
WaitUpTo(TimeSpan.FromSeconds(5))
.Until(d => element.Enabled);
element.Click();
}
TryClick(By.XPath("//button[contains(.//*,'Some Text')]"));