Webアプリをテストします。テーブルにはすべてのエントリを選択するためのボタンがあります。私はもう試した:
driver.wait.until(ExpectedCondition.element_to_be_clickable((By.XPATH, "myXpath"))).click()
セレンはボタンをクリックしますが、何も起こりません。 (send_Keys(Keys.Return)も使用)アプリケーションはGXTで開発されており、ボタンの後ろには多くのjavascriptがあります。イベントローダーの準備ができるまで待つ可能性はありますか?クリックで問題が解決されるまで待機しますが、自動テストのソリューションではありません。
python isの明示的な待機の正しい構文:
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行のコード。
私もその問題を抱えていました... 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を次のように変更するかもしれません:(これがWebアプリで機能するかどうかわからない)
xpath = "//whatever_goes_here[@clickable='true']"