最后一页(上传页面)不断回头,如何在selenium中保持同一页

时间:2015-09-09 11:58:07

标签: python selenium selenium-webdriver

我有一个selenium webdriver应用程序,可以浏览java applet文件夹并到达特定的文件夹,然后上传特定的zip文件

让我们调用这些文件夹: folder1 > folder2 >的 folder3

当我到达文件夹3 时,会出现一个下拉列表,通常位于所有文件夹的顶部。这允许我将文件上传到我所在的特定文件夹。

enter image description here

当我点击上传文件按钮时,它会转到另一个页面,我可以选择一个文件并将其上传

下面的图片显示了它的外观部分

enter image description here

问题:

当我上传文件时,它会上传到文件夹2 。我试图理解为什么,但无法弄明白。所以我试着评论上传步骤,并将我的最终目的地作为我上传文件的页面。然而,页面到达那里,然后刷新并立即返回到文件夹3页面的一小部分。

在上传过程中,页面会向后跳转并允许文件转到文件夹 2而不是文件夹3 。不确定这是否是问题,但似乎很可能

这是我的代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()
driver.get("URL")


#click on folder 1
folder1_wait = WebDriverWait(driver, 10)
folder1_element = folder1_wait.until(EC.element_to_be_clickable((By.LINK_TEXT,'folder1')))
folder1_link = driver.find_element_by_link_text('folder1')
folder1_link.click()

#click on folder 2
folder2_wait = WebDriverWait(driver, 10)
folder2_element = folder2.until(EC.element_to_be_clickable((By.LINK_TEXT,'folder2')))
folder2_link = driver.find_element_by_link_text('folder2')
folder2_link.click()

#click on folder 3
folder3_wait = WebDriverWait(driver, 10)
folder3_element = folder3.until(EC.element_to_be_clickable((By.LINK_TEXT,'folder3')))
folder3_link = driver.find_element_by_link_text('folder3')
folder3_link.click()


#CLICK ON FOLDER OPTION DROPDOWN MENU
folder_wait = WebDriverWait(driver, 10)
folder_element = folder_wait.until(EC.element_to_be_clickable((By.ID,'ext-gen55')))
folder_link = driver.find_element_by_id('ext-gen55')
folder_link.click()

#CLICK ON UPLOAD BUTTON IN DROPDOWN MENU
upload_wait = WebDriverWait(driver, 10)
upload_element = upload_wait.until(EC.element_to_be_clickable((By.ID, 'ext-gen285')))
upload_link = driver.find_element_by_id('ext-gen267')
upload_link.click()


#at this point the page stay in upload path for couple of seconds and then goes back immediatly to folder3

#select folder link
select_link = driver.find_element_by_class_name('members_file')
select_link.send_keys("C:\\Users\\myUser\\Desktop\\test.zip")

#submit uploading folder
ok_link = driver.find_element_by_class_name("borderButton")
ok_link.click()

该问题的任何可能的解决方案?有没有办法留在上传页面?

1 个答案:

答案 0 :(得分:0)

正如你所说: - "当我点击“上传文件”按钮时,它会转到另一个页面,在那里我可以选择一个文件"

现在我假设你现在想要在你的上传功能存在的页面上进行操作。为此,您需要指示selenium将控制权传递给下一页,否则selenium会尝试在同一页面上找到该元素。

要在python中切换你的控件,你可以参考下面的链接,因为我是java家伙,这个平台不允许我分享OP(你)没有使用的任何其他语言代码: -

参见3.4

let object: NSDictionary = self.collectionObjects?.objectAtIndex(indexPath.row) as! NSDictionary
let locked = (object.objectForKey("locked") as? NSNumber)?.boolValue
if locked == true
{  
    println("locked")
}
else
{
    println("open")
}

希望它会对你有所帮助:)。