我正在编写脚本,使用selenium将我的ssh密钥添加到bitbucket的部署密钥中。直到
driver.find_element_by_id('add-key').click()
工作正常,但弹出窗口时,我想在特定字段中输入密钥
driver.find_element_by_name('key').send_keys('testing key added')
它会抛出此错误 元素目前不可见,因此可能无法与进行交互。我在google上搜索了这个。我知道首先我需要转到这个弹出窗口,然后我将能够将值传递给相应的元素。我不知道该怎么做。
请帮助我如何专注于新的弹出窗口。 我也使用了time.sleep(10),但它对我没用。
答案 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')`
希望你找到解决方案。
注意:如果您随机收到错误,请等待或暂停。这个原因可以最大限度地减少元素不可见的可能性(根本原因:页面未正确加载。)