Selenium Python 3.4.3自动下载(按钮)部分

时间:2016-04-15 14:43:56

标签: python selenium selenium-webdriver downloading

所以我目前正在努力点击“#34;下载”按钮"。我尝试过多种不同的方式使用css_selector,而且我最确定的方式(下面)因某种原因给我一个错误。有人可以看看我下面的代码,并帮助我理解代码有什么问题。

以下是该计划的全部代码:

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
import time

browser = webdriver.Firefox()
browser.get('https://torrentz.eu/')

searchElem = browser.find_element_by_id('thesearchbox')
searchElem.send_keys('Limitless')
searchButton = browser.find_element_by_id('thesearchbutton')
searchButton.click()


wait = WebDriverWait(browser, 6)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.results dl")))

link_num_1 = browser.find_element_by_css_selector('div.results dl dt a')
link_num_1.click()

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.download dl")))

link_num_2 = browser.find_elements_by_css_selector('div.download dl dt a')
link_num_2[1].click()

这就是问题所在:

Site_link_trynum_1 = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.category-detail li a")))
#Site_link_trynum_1 = browser.find_element_by_css_selector("div.li a")
Site_link_trynum_1.click()

1 个答案:

答案 0 :(得分:1)

从它的外观中找不到- (void)updateLayout { // Update the frame of the header view so that it scrolls with the webview content CGRect newHeaderFrame = self.headerView.frame; CGRect newFooterFrame = self.footerView.frame; newHeaderFrame.origin.y = -CGRectGetMinY([self.webView convertRect:self.innerHeaderView.frame toView:self.webView.scrollView]); newFooterFrame.origin.y = self.webView.scrollView.contentSize.height; [self.headerView setFrame:newHeaderFrame]; [self.footerView setFrame:newFooterFrame]; if ([self didTapToFullScreen]) { // The delegate was already called in this case, in the tap gesture callback method return; } BOOL fullScreen = (newHeaderFrame.origin.y < 0); if (([self isZooming] && [self didSwitchToFullScreen]) || (fullScreen == [self isFullScreen])) { return; } [self setSwitchToFullScreen:fullScreen]; [self setFullScreen:fullScreen]; // Call the delegate for the full screen [self.fullScreenDelegate emailView:self showFullScreen:fullScreen]; } ,因为该页面已在新窗口中打开,而Selenium正在原始窗口(torrents.eu)中查找它。 您可以尝试使用switch_to_window()切换窗口  方法,虽然因为你正在处理很多弹出窗口,但最好是获取传出的url并在当前窗口中打开它,就像这样,

UIWebView
但是,值得考虑的是,如果获取网站链接是您的目标,那么就要避免将Selenium放在一起并编写一种网络爬虫。如果你确实继续使用Selenium,那么看看Splinter可能是值得的,它是Selenium之上的一个抽象层,可以更容易地编写测试。使用Splinter时,上面的测试看起来就像这样,

div.category-detail li a