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

时间:2016-02-22 11:23:30

标签: python selenium

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

driver.find_element_by_id('add-key').click()

工作正常,但弹出窗口时,我想在特定字段中输入密钥

driver.find_element_by_name('key').send_keys('testing key added')

它会抛出此错误 元素目前不可见,因此可能无法与进行交互。我在google上搜索了这个。我知道首先我需要转到这个弹出窗口,然后我将能够将值传递给相应的元素。我不知道该怎么做。

enter image description here

请帮助我如何专注于新的弹出窗口。 我也使用了time.sleep(10),但它对我没用。

3 个答案:

答案 0 :(得分:0)

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

// get  window ids of all windows 
 Set<String> windowId = driver.getWindowHandles();    
        Iterator<String> itererator = windowId.iterator();   

        String parentWindow = itererator.next();
        String  childWindow = itererator.next();

        driver.switchTo().window(childWindow);
        //Enter the value for ssh key,Save and close the child window.

        driver.switchTo().window(parentWindow); // now swicth back to the Parent WINDOW.
        Thread.sleep(2000);

希望这对你有用.. :))

答案 1 :(得分:0)

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

答案 2 :(得分:0)

问题是driver.find_element_by_name('key').send_keys('testing key added')给出了元素列表。因此脚本需要识别textarea的唯一元素。

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

driver.find_element_by_xpath("(//textarea[@name='key'])[2]").send_keys('testing key added')`

希望你找到解决方案。

注意:如果您随机收到错误,请等待或暂停。这个原因可以最大限度地减少元素不可见的可能性(根本原因:页面未正确加载。)