我正在测试的web应用程序的主页在您第一次加载它时有一个加载屏幕,然后会出现一个用户名/密码框。它是一个动态生成的UI元素,游标默认位于username字段内。你知道吗
我环顾四周,有人建议使用行动链。当我使用动作链时,我可以立即在username和password字段中输入文本,然后按enter键,下一页就可以加载了。不幸的是,由于我的特殊设置,行动链不是一个可行的长期答案。你知道吗
当我使用webdriver的find_element_by_id
时,我能够找到它,但是我不能send_keys
到元素,因为它是不可见的。我收到
selenium.common.exceptions.ElementNotVisibleException: Message: element not visible.
我也不能点击该字段或以其他方式与之交互而不出现此错误。你知道吗
我也尝试过通过其他方式识别和交互元素,比如“xpath”和css,但都没有效果。它们总是not visible
。你知道吗
奇怪的是,它适用于动态页面标题。页面第一次加载时为Loading...
,完成时为Login
。当调用driver.title
时,驱动程序将返回当前标题。你知道吗
有人有什么建议吗?你知道吗
正如saurabh所建议的,使用 1自己等着(EC.元素的可见性((By.CSS\u选择器, 或.Sub\u类别)))你知道吗
否则就睡一觉吧,但是不建议使用它,可能是您在页面加载时更改的xpath
实际上,如果登录页中出现了加载进度条,您应该尝试使用^{} 等待元素变为可见,如下所示:-
Edited1:-如果您得到
TimeoutException
,我建议您尝试等待,然后使用WebDriverWait
而不是硬编码的sleep wait加载进度条,找到不可见的元素,然后按如下所示查找desire元素:-Edited2:-实际上
presence_of_element_located
元素只检查DOM上是否存在元素,而visibility_of_element_located
检查存在和可见元素,这意味着presence_of_element_located
还可以找到隐藏元素和可见元素,而可见性只可见,这就是presence_of_element_located
工作的原因。你知道吗现在的问题是在
send_keys
期间,因为硒在元素不可见之前是不可能在元素内部的,这就是为什么你会有麻烦的原因,可能是欲望元素上有一些隐藏的CSS
工作,这使得它不可见,这就是为什么硒不能与它交互,但不用担心,你仍然可以使用execute_script
设置值。你知道吗现在您可以尝试在元素查找之后设置输入元素的值,而不是使用
send_keys
,如下所示:相关问题 更多 >
编程相关推荐