触发器从appium响应更改事件

时间:2018-05-02 15:24:19

标签: reactjs selenium selenium-webdriver webdriver appium

我正在构建混合应用程序的自动化,其中登录屏幕是反应Web视图,我无法控制它。 登录按钮被禁用,直到在密码输入字段中输入内容为止。 Selenium可以输入密码输入,但是反应无法识别更改,因此它永远不会启用按钮。 我正在使用python库来进行appium。

这是密码输入的HTML:

<input type="password" class="TextInput--textInput__271qa TextInput-mobile--textInput__jba5n PasswordInput--password__8sQc8 TextInput--hasError__2DrJ8">

对于登录按钮:

<button class="Button--strongActionButton__154DS Button--mediumButton__Ga30r SignInScreen-mobile--signInButton__adj3k" type="submit" disabled="">Sign In</button>

这是我将文本发送到密码输入字段并单击登录按钮的方式:

self.driver.switch_to.context(self.driver.contexts[-1])
self.driver.find_element_by_xpath("//input[@type='password']").send_keys("test_user@gmail.com")
self.driver.find_element_by_xpath("//button[@type='submit']").click()

最后一个操作成功但由于该按钮被禁用,因此它不会执行任何操作。

我尝试从appium触发JS事件但没有运气。我也试过通过JS启用按钮,但它仍然没有检测到输入的值。

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

正如您所提到的那样登录按钮被禁用,直到在密码输入字段中输入内容,因此一旦您在密码中发送密码文本 字段您需要等待登录按钮可点击,以便 WebDriverWait ,如下所示:

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

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@type='submit']"))).click()