当前位置: 首页 > 知识库问答 >
问题:

点击动作在selenium中不起作用

经清野
2023-03-14

我还是Selenium测试世界的新手,目前正在使用SeleniumChromeWebDriver进行测试。

我想做的是在下面的弹出对话框中:

    < li >在文本输入框中输入一个数字 < li >单击应用按钮 < li >然后将触发web应用程序向服务器端发布信息。
/*
 ....
 a bunch of assert and wait.until function to make sure everything is correct till this step.
 ....
*/
driver.findElement(By.xpath(DIALOGBOX + "/input")).sendKeys("10");
//Thread.sleep(500);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath(APPLY_BUTTON)));
new Actions(driver).moveToElement(driver.findElement(By.xpath(APPLY_BUTTON))).click().perform();

这是我到目前为止发现的,如果我取消对<code>线程的注释。睡眠(500),一切都将完美工作。但是没有<code>线程。sleep(500),web应用程序将不会对应用按钮应触发的服务器进行post调用。

我不知道为什么会发生这种情况,Thread.sleep(500)对点击动作有什么不同,硒是花时间移动到元素上,并用鼠标执行点击还没有到达按钮位置吗?以及如何在不使用线程睡眠的情况下修复我的案例?

首先,我忘记提到Web应用程序是基于GWT(Google Web工具包)构建的。我已经确保驱动程序在单击()之前成功获取了按钮元素,因此将错误最小化为单击()的操作。然后我尝试了

new Actions(driver).moveToElement(driver.findElement(By.xpath(APPLY_BUTTON)).sendKeys(Keys.ENTER).perform();

它工作完美,无需使线程Hibernate。因此,错误的原因是selenium的单击操作与GWT处理onclick函数的方式不同。如果遇到同样的问题,请尝试使用sendKeys,并为客户端添加onKeyPress的处理程序

共有3个答案

公西运良
2023-03-14

首先,我忘了提到网络应用程序是建立在GWT(谷歌网络工具包)上的。我已经确保驱动程序在单击()之前已成功获取按钮元素,因此错误最小化为单击操作的()。

new Actions(driver).moveToElement(driver.findElement(By.xpath(APPLY_BUTTON))
    .sendKeys(Keys.ENTER).perform();

它工作完美,无需使线程Hibernate。因此,错误的原因是selenium的单击操作与GWT处理onclick函数的方式不同。如果遇到同样的问题,请尝试使用sendKeys,并为客户端添加onKeyPress的处理程序

麹高义
2023-03-14

我可能会尝试js。ExecuteScript方法为(以下代码用于c#)

IJavaScriptExecutor js = driver as IJavaScriptExecutor;
string jsOutput = (string)js.ExecuteScript(String.Format("document.getElementById('{0}').click();", elementId));

如果正常<code>单击<code>失败

邹杰
2023-03-14

仅仅因为按钮是可见的,selenium认为它是可点击的,并不意味着它就可以使用了。检查浏览器检查器并调查它是否与一些异步javascript绑定。这意味着,警报可能正在等待某个后台进程完成,然后您才可以实际单击它以发生事件。

在输入字段中输入一个值后,可能会有一个异步脚本发送到服务器,导致单击“应用”按钮时什么也不做,直到服务器做出响应。500毫秒的延迟刚好足够ajax通信完成。

要了解有关 ajax 的更多信息,请执行以下操作:https://www.tutorialspoint.com/ajax/what_is_ajax.htm

 类似资料:
  • 我在https://www.yatra.com/etw-desktop/.学习自动化硒测试。当我尝试单击名为“亚洲”的图像按钮(图片已附)时,我收到一个超时异常。请帮我弄清楚出了什么问题。 显示要单击的Web元素的图像

  • 问题内容: 我在正在翻译动画的UILabel上有一个轻击手势。动画期间,只要在标签上轻按,轻按手势就不会有响应。 这是我的代码: 手势代码: 有任何想法吗?谢谢 :) 问题答案: 使用Tapgesture后,您将无法完成自己的工作,原因有1个。手势与标签的框架相关联。开始动画时,标签的最后一帧立即更改,而您只是在观看假电影(动画)。如果您能够触摸屏幕上的(0,900),它将在发生动画时照常触发。不

  • 让我首先说,我尝试了以下链接堆栈溢出文章中的建议,但没有成功: 禁用chromedriver中的PDF查看器插件 以下是我的ChromeOptions: 您会注意到(“disable-popup-blocking”,true)位被注释掉了,这是因为我没有看到这个: 有人对这里发生的事情有任何可能的解决方案或洞察力吗?我对编程还比较陌生,希望得到任何建议。 如果相关的话,我试图下载的PDF是Sale

  • HTML格式 我没有这个的id或名称。因此我写 但click()没有发生。 已尝试driver . find element(by . CSS selector("。按钮[值=搜索]”)。单击(); 尝试值='Search '(单引号)。 这些选择器正在

  • 问题内容: 我正在尝试使用Python和Selenium在LinkedIn上添加联系人。我试图通过在“网络”选项卡(https://www.linkedin.com/mynetwork)中添加LinkedIn提出的联系建议来实现此目的,该选项具有无限滚动功能。 基本上,我希望脚本找到每个建议的配置文件旁边的“连接”按钮,单击该按钮,然后重复执行直到出现错误为止,从而脚本应向下滚动以加载更多“连接”