Python Selenium点击Slack邀请发送按钮报元素拦截异常
Slack管理后台自动邀请用户Selenium脚本问题
初始脚本代码
用于实现Slack管理后台邀请用户功能的Python自动化核心代码如下:
def inviteuser(): invitebutton.click() time.sleep(2.5) addressbox = driver.find_element_by_xpath('/html/body/div[9]/div/div/div[2]/div/div[1]/div/div/div/div/div[3]/div/div/div[1]') time.sleep(2.5) addressbox.send_keys(email) time.sleep(2.5) sendbutton = driver.find_element_by_xpath('/html/body/div[8]/div/div/div[3]/div[2]') sendbutton.click()
运行异常表现
脚本执行到点击发送按钮步骤时抛出如下异常:
selenium.common.exceptions.ElementClickInterceptedException: Message: Element <div class="c-sk-modal_footer_actions"> is not clickable at point (834,677) because another element <div class="ReactModal__Overlay ReactModal__Overlay--after-open c-popover c-popover--z_above_fs c-popover--fade"> obscures it
初期尝试的排查方案均未生效:
- 在浏览器中检索报错提示的遮挡div元素,未找到对应节点
- 改用CSS选择器定位发送按钮执行点击,使用的选择器为
.c-button .c-button--primary .c-button--medium,点击操作仍未生效
发送按钮对应的HTML源码如下:
<div class="c-sk-modal_footer_actions"> <button class="c-button c-button--primary c-button--medium c-button--disabled" data-qa="invite-to-workspace-modal-invite-form-send-button" type="button" aria-disabled="true"> "Send" ::after </button> </div>
已定位的根因
Slack邀请弹窗的交互逻辑为:邮箱输入框填入地址后,必须按下空格、逗号或回车键确认输入,发送按钮才会从禁用状态变为可点击状态。
本地测试验证:硬编码邮箱变量为email = "test@test.com"时,追加执行addressbox.send_keys(confirm)(confirm变量赋值为空格)即可正常走完邀请流程。
现存问题
当email变量设置为从PowerShell传入的sys.argv[1]参数时,追加输入确认按键的操作会覆盖之前已经填入输入框的邮箱内容,输入框最终仅保留确认按键的输入内容,无法正常完成邀请流程。
内容的提问来源于stack exchange,提问作者TL_Arwen
相关产品推荐
相关产品推荐

