无法使用python和selenium

时间:2018-05-03 12:34:37

标签: python selenium selenium-webdriver automation

我想在“http://pdfcompressor.com/”网站上自动化文件压缩。我使用selenium上传文件但未能这样做。 以下是代码

file_path = "/home/gugli/Documents/script_py/Dainik_Jagron/h2.pdf"
browser = webdriver.Firefox()
url = 'http://pdfcompressor.com/'
browser.get(url)

我尝试插入输入标记,但得到了错误

browser.find_element_by_id('html5_1cciqvn90sehe7rachs1c3m03').send_keys(filepath)

this is the snapshot of input tag

以下是错误:

Traceback (most recent call last):
  File "/home/gugli/Documents/script_py/Dainik_Jagron/uploadfiles.py", line 32, in <module>
    browser.find_element_by_id('html5_1cciqvn90sehe7rachs1c3m03').send_keys("/home/gugli/Documents/script_py/Dainik_Jagron/h2.pdf")
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 330, in find_element_by_id
    return self.find_element(by=By.ID, value=id_)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 832, in find_element
    'value': value})['value']
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 297, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response

raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException:

Message: Unable to locate element: [id="html5_1cciqvn90sehe7rachs1c3m03"]

该文件存储在“ul”标签中。但是甚至没能上传这个标签。 以下是上传文件前后的dom结构快照

Before uploading file

After uploading file

上传的文件存储为“li”元素(图片3)。我尝试插入“div id = carousel”容器,但再次尝试失败。 我怎样才能使用python在这里上传文件。

1 个答案:

答案 0 :(得分:1)

从你的网址看来,硒似乎找不到元素

selenium.common.exceptions.NoSuchElementException:

Message: Unable to locate element: [id="html5_1cciqvn90sehe7rachs1c3m03"]

在这种特定情况下,输入字段的id是自动生成的,这意味着它对于每个会话都是不同的。您所看到的身份证明与您通过硒打开时的身份不同。

我建议在这种特殊情况下通过XPath找不到元素

使用XPath .//input[type = 'file']或其他东西,以便selenium可以识别元素