Python selenium:等到元素可点击 - 不工作

Posted

技术标签:

【中文标题】Python selenium:等到元素可点击 - 不工作【英文标题】:Python selenium: wait until element is clickable - not working 【发布时间】:2015-03-22 11:57:29 【问题描述】:

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

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

selenium 点击按钮,但没有任何反应。 (也使用 send_Keys(Keys.Return))该应用程序是使用 GXT 开发的,我认为按钮后面有很多 javascript。是否有可能等到事件加载器准备好?等待点击解决问题,但不是自动化测试的解决方案。

【问题讨论】:

您需要分享代码或网址以获得全面的帮助。你能做到吗? 【参考方案1】:

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

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

在上面你做的更好: element.click();

所以在你的情况下:

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();

你最好跟着它。还分享您的整个代码,以便我更正它。您仅有的 1 行代码几乎不会造成混淆。

【讨论】:

你能想象WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "myXpath"))).click() 给我同样的错误吗?顺便说一句,你注意到分号了吗?【参考方案2】:

我也遇到过这个问题……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']"

【讨论】:

以上是关于Python selenium:等到元素可点击 - 不工作的主要内容,如果未能解决你的问题,请参考以下文章

Selenium 预期条件,等到元素可交互?

Python Selenium 2 API 并等待 DOM 准备好/元素可见

Python Selenium:等到元素不再陈旧?

Python Selenium:等到元素不再陈旧?

Selenium WebElement.Click() 是不是等到加载下一页?

Python 3.5 - Selenium - 如何处理新窗口并等到它完全加载?