Python Selenium click()不起作用

时间:2016-11-15 17:42:37

标签: python selenium click

我正在尝试使用Python中的Selenium自动化Web文件下载程序。但是我在使用Selenium单击一个特定按钮时遇到一些困难:程序成功导致此URL“https://www.sec.gov/Archives/edgar/data/1467373/000119312510235847/0001193125-10-235847-index.htm”,但它无法单击第一个文档的按钮(d10k.htm)。该按钮在以下代码中定义为“formbuttonElement”,我通过Xpath跟踪它。另外,我使用了click()和.send_keys(Keys.SPACE)方法,但它们都不起作用。

有人可以看看这个问题吗?

谢谢!

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
import unittest
import os


class LoginTest(unittest.TestCase):
 def setUp(self):
    fp=webdriver.FirefoxProfile(r"C:\Users\sxc\AppData\Roaming\Mozilla\Firefox\Profiles\x5i7u4m7.profileToolsQA")

    fp.set_preference("browser.download.folderList",2)
    fp.set_preference("browser.download.manager.showWhenStarting",False)
    fp.set_preference("browser.download.dir", "D:\doc1")
    fp.set_preference("pdfjs.disabled", True)
    fp.set_preference("plugin.disable_full_page_plugin_for_types", "application/pdf")

    fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/pdf")


    self.driver=webdriver.Firefox(firefox_profile=fp)
    self.driver.get("https://www.sec.gov/edgar/searchedgar/companysearch.html")


 def test_Login(self):
    driver=self.driver

    cikID="cik"
    searchButtonID="cik_find"
    typeID="//*[@id='type']"
    priorID="prior_to"
    cik="00001467373"
    Type="10-K"
    prior="20101231"
    search2button="//*[@id='contentDiv']/div[2]/form/table/tbody/tr/td[6]/input[1]"


    documentsbuttonid="documentsbutton"
    formbuttonxpath="(//a[contains(@href,'/Archives/edgar/data/')])[1]"


    cikElement=WebDriverWait(driver,30).until(lambda driver:driver.find_element_by_id(cikID))

    cikElement.clear()
    cikElement.send_keys(cik)


    searchButtonElement=WebDriverWait(driver,20).until(lambda driver:driver.find_element_by_id(searchButtonID))
    searchButtonElement.click()

    typeElement=WebDriverWait(driver,30).until(lambda driver:driver.find_element_by_xpath(typeID))
    typeElement.clear()
    typeElement.send_keys(Type)
    priorElement=WebDriverWait(driver,30).until(lambda driver:driver.find_element_by_id(priorID))
    priorElement.clear()
    priorElement.send_keys(prior)
    search2Element=WebDriverWait(driver,30).until(lambda driver:driver.find_element_by_xpath(search2button))
    search2Element.send_keys(Keys.SPACE)
    time.sleep(1)

    documentsButtonElement=WebDriverWait(driver,20).until(lambda driver:driver.find_element_by_id(documentsbuttonid))
    documentsButtonElement.click()

    formElement=WebDriverWait(driver,30).until(lambda driver:driver.find_element_by_xpath(formbuttonxpath))
    formElement.send_keys(Keys.SPACE)



 def terdown(self):
    self.driver.quit()
if __name__=='__main__':
unittest.main()

1 个答案:

答案 0 :(得分:1)

试试这行代码

driver.find_element_by_xpath('//a[text()="d10k.htm"]').click()