我有下面的html代码.

<div align="center">
    <input type="file" name="filePath"><br>
    <input type="Submit" value="Upload File"><br>
</div>

我正在try 使用Selenium和Python查找两个元素"file"和"submit".下面是我try 使用的代码.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# create a new Firefox session
driver = webdriver.Chrome()

# Maximize the browser window
driver.maximize_window()

# Enter the url to load
driver.get("<<MY PAGE TO LOAD>>")

# Wait for the page to load
driver.implicitly_wait(5)

# find the upload file type and pass a test value
upload_field = driver.find_element_by_partial_link_text('file')
upload_field.clear()
upload_field.send_keys("test")

当我运行此代码时,我能够在Chrome浏览器中成功加载页面,但我得到以下异常.

# Exception when trying to get element by type
Traceback (most recent call last):
  File "C:\Users\TEST\Desktop\Test.py", line 33, in <module>
    upload_field = driver.find_element_by_partial_link_text('file')
  File "C:\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 453, in find_element_by_partial_link_text
    return self.find_element(by=By.PARTIAL_LINK_TEXT, value=link_text)
  File "C:\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 955, in find_element
    'value': value})['value']
  File "C:\Python\Python36\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 312, in execute
    self.error_handler.check_response(response)
  File "C:\Python\Python36\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 237, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"partial link text","selector":"file"}
  (Session info: chrome=63.0.3239.132)
  (Driver info: chromedriver=2.35.528161 (5b82f2d2aae0ca24b877009200ced9065a772e73),platform=Windows NT 10.0.14393 x86_64)

我查看了提供的解决方案here,但这也是一个错误.我目前正在使用Python 3.6.4 x64和Selenium 3.8.1.我的操作系统是Windows 7 x64位.如何在html中获取带有"type"的元素?

推荐答案

在查找元素时签出the docs.我发现XPath或css选择器特别强大,因为它们非常通用.

xpath

upload_field = driver.find_element_by_xpath("//input[@type='file']")

css选择器

upload_field = driver.find_element_by_css_selector("input[name='filePath'][type='file']")

Python-3.x相关问答推荐

如何融化具有自定义名称的Pandas

使用 pandas 进行多类分类的总体准确度

删除括号和大括号中不必要的空格

魔术8球txt文件列表

ImportError:无法从“jinja2”导入名称“escape”

如何查找 tensorflow.python.data.ops.dataset_ops.MapDataset 对象的大小或形状,make_csv_dataset 的输出

python用户输入5个偶数并打印最大的

是否将dict转换为一个数据帧,每个值都有重复的键?

Python 3.9.8 使用 Black 并导入 `typed_ast.ast3` 失败

所有 Python dunder 方法的列表 - 您需要实现哪些方法才能正确代理对象?

为什么 pip3 在 Ubuntu 20.04 上安装/更新软件包后要创建一个 kdewallet?

“警告:scheme.data 的值不匹配”当我try 更新 pip 或安装软件包时

为什么 Python 返回 [15] for [0xfor x in (1, 2, 3)]?

没有找到 Python;不带参数运行以从 Microsoft Store 安装,或从“设置”中禁用此快捷方式

python中奇怪的作用域行为

Generic[T] 基类 - 如何从实例中获取 T 的类型?

virtualenv virtualenvwrapper virtualenv:错误:无法识别的参数:--no-site-packages

安装 PyTorch 1.4 的问题 - “没有找到与 torch===1.4.0 匹配的发行版”

如何从 yml 文件制作新的 anaconda env

Plotly:如何设置线条 colored颜色 ?