Python 错误:消息元素当前不可见,因此可能无法与之交互

Python 错误:消息元素当前不可见,因此可能无法与之交互,python,selenium,Python,Selenium,我正在编写脚本,使用selenium将我的ssh密钥添加到bitbucket的部署密钥中。排队 driver.find_element_by_id('add-key').click() 工作正常,但当弹出窗口出现时,我想在特定字段中输入键 driver.find_element_by_name('key').send_keys('testing key added') 它抛出了这个错误 元素当前不可见,因此可能无法与之交互。我在谷歌上搜索过这个。我知道首先我需要进入这个弹出窗口,然后我将能够

我正在编写脚本,使用selenium将我的ssh密钥添加到bitbucket的部署密钥中。排队

driver.find_element_by_id('add-key').click()
工作正常,但当弹出窗口出现时,我想在特定字段中输入键

driver.find_element_by_name('key').send_keys('testing key added')
它抛出了这个错误 元素当前不可见,因此可能无法与之交互。我在谷歌上搜索过这个。我知道首先我需要进入这个弹出窗口,然后我将能够将值传递给相应的元素。我不知道怎么做

请帮助我如何聚焦到新的弹出窗口。
我也使用了time.sleep(10),但它对我仍然不起作用。

首先,您需要确定当前窗口的列表,因为您的情况是有两个窗口, 父母和新的一个孩子。所以,通过指定子窗口的名称将控件移动到子窗口。(为了验证您是否在子窗口上。) 移动到子窗口后添加getTitle()方法) 一旦控件在子窗口上移动,就可以输入SSH密钥的值。(下面的代码是java代码)

//获取所有窗口的窗口ID
设置windowId=driver.getWindowHandles();
迭代器itererator=windowId.Iterator();
字符串parentWindow=itererator.next();
String childWindow=itererator.next();
driver.switchTo().window(childWindow);
//输入ssh key的值,保存并关闭子窗口。
driver.switchTo().window(父窗口);//现在切换回父窗口。
《睡眠》(2000年);

希望这对你有用……)

我认为您不需要关注该弹出窗口,请使用Xpath方法(通过Xpath查找元素)指向该元素。

问题是
驱动程序。通过名称(“键”)查找元素。发送键(“添加测试键”)
给出元素列表。所以脚本需要识别textarea的唯一元素

解决方案:xpath:
(//textarea[@name='key'])[2]

driver.find_element_by_xpath("(//textarea[@name='key'])[2]").send_keys('testing key added')`
希望你能找到解决办法


注意:如果您随机出现错误,也可以设置等待或睡眠。这将最大限度地减少元素不可见的可能性(根本原因:页面未正确加载。)

这似乎很好,但我不知道此编码的Java到Python转换。请尝试通过“id”而不是“名称”获取该元素。ie;驱动程序。按id(“键”)查找元素。发送键(“添加的测试键”)我已经按id尝试过,但它首先需要元素的焦点。单击“添加键”按钮后,您是否已使用put wait或sleep进行检查?是的,我已使用时间。sleep(10)但是它对meI不起作用。我发布了一个答案请验证。它抛出了一个错误驱动程序。通过xpath('//textarea[@name=“key”]”)查找元素[2]。发送键('key added')类型错误:'WebElement'对象不支持indexingdriver。通过xpath(//textarea[@name=“key”])[2]”查找元素。使用这个我对此还有一个疑问。我有添加键,但正在使用驱动程序。通过xpath(“(//按钮[contains(text(),“Add key”)]”)查找元素。单击()无效。请帮助我们。
driver.find_element_by_xpath("(//textarea[@name='key'])[2]").send_keys('testing key added')`