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

Python selenium:等待元素可单击-不工作

史鹏云
2023-03-14

我将测试一个网络应用程序。在我的表中有一个按钮可以选择所有条目。我尝试过:

driver.wait.until(ExpectedCondition.element_to_be_clickable((By.XPATH, "myXpath"))).click()

selenium单击按钮,但什么也没发生。(还有send_Keys(Keys.Return))应用程序是用GXT开发的,我发现按钮后面有很多javascript。是否有可能等待事件加载器准备就绪?在单击之前等待可以解决问题,但不是自动测试的解决方案。

共有2个答案

戚育
2023-03-14

我也有这个问题。。。Web应用的视图多于视图,Appium有时会出错。

这对我很有用:

x = webElement.location['x'] + (webElement.size['width']/2)
y = webElement.location['y'] + (webElement.size['height']/2)
print("x: "+x+" - y: "+y)

//I have setted a 200 milli duration for the click...
//I use tap just for Android... If is iOS for me it works better touchAction
driver.tap([(x,y)], 200)

编辑:

我误解了你的问题...抱歉...也许修改你的Xpath到:(不知道这是否适用于网络应用程序)

xpath = "//whatever_goes_here[@clickable='true']"
邓德厚
2023-03-14

Python中显式等待的正确语法是:

 element = WebDriverWait(driver, 20).until(
 EC.presence_of_element_located((By.ID, "myElement")))

最好是在你做了以上的事情之后:元素。单击();

因此,在你的情况下:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

element = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.XPATH, "myXpath")))

element.click();

你最好跟着它走。还可以共享您的全部代码,以便我可以更正它。你只需要一行代码就可以搞乱了。

 类似资料:
  • 我有一个动态加载的页面,其中包含一个按钮。我正在尝试等待selenium使用C#绑定点击按钮。我有以下代码: 不过这不管用。click事件永远不会被触发。selenium脚本不会抛出异常警告ID为“addInspectionButton”的元素不存在。它只是不能点击它。如果我加一根线。Sleep(3000)在wait语句和我获得按钮元素句柄的那一行之间。 我没有使用预期条件.元素在这里正确点击吗?

  • 当我点击一个按钮时,它会显示一个带有另一个按钮的表单,我想点击其中一个。这是一个视频(非常短),请观看http://screencast.com/t/zyliSemW1s1 所以我点击“买票”按钮,简单如下: 然后我等待下一个按钮被点击。 我使用下一个代码: 之后,我点击我等待的按钮: 我得到错误:元素在这一点上是不可点击的。 据我所知,该方法预期的条件。ElementToBeClickable(

  • 显式等待不是在输入用户名和密码时等待可单击元素 场景: 点击whataburger.com登录 输入用户名和密码 等待Signin按钮启用,然后单击Signin(这是selenium不等待元素启用并单击的步骤) 我已经尝试了所有显式的等待功能,使用元素使其可点击,元素的存在,元素的可见性 没有错误selenium的行为就像它在被禁用时点击了按钮

  • 我正在实现一个游戏,我想让玩家点击一个特定的视图。 我希望我的控制线程等到我得到一个值回来(我已经单击了视图并处理了结果)。目前,我正在通过创建一个线程、运行一个要求它们单击的方法来执行此操作,然后进入一个当鼠标单击事件更改在time循环中使用的变量时终止的time循环。 我正在写一个游戏,其中我有一个线程不断接收事件。对于一个特定事件,我想提示用户做出响应,但要做到这一点,我需要使用JavaFX

  • 所以我们有一页医学专科。它原本只是英文的。因此,如果您搜索“neuro”,则HTML看起来类似于 然后他们添加了西班牙语,所以并不是所有的结果都会返回,但是只有西班牙语是可见的。一个新的 > 添加在底部。 是否有方法等待任何匹配xpath的元素可见?注意,visibilityOfAllElements()将不起作用,因为它们不会全部可见。 我想可以做的是,预先计算所有带有@id和“width”的元