我正在构建混合应用程序的自动化,其中登录屏幕是反应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启用按钮,但它仍然没有检测到输入的值。
感谢任何帮助,谢谢!
答案 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()