繁体   English   中英

用硒找到“文件上传”按钮

[英]Locate “file upload” button with Selenium

我有下面显示的按钮(图像和HTML),正在尝试单击它。

Selenium无法找到它-我尝试通过xpath和ID进行定位。

<input id="wsUpload1" type="file" name="file">

XPATH:

element = driver.find_element_by_xpath('//input[@id="wsUpload1"]')
element.click()

我要去哪里错了?

编辑:这是Selenium引发的异常:

selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“ method”:“ xpath”,“ selector”:“ // input [@ id =” wsUpload1“]”}

不确定为什么找不到您的按钮,可能是因为引号引起的(尽管在这种情况下应该显示错误),请尝试使用driver.find_element_by_xpath(".//input[@id='wsUpload1']")然后查看如果可行。 我不确定您的按钮是否已经显示在页面上,或者您以某种方式触发了它,所以它还不存在? NoSuchElementException异常是因为在该页面上找不到目标元素,可能是您在错误的页面上,元素尚未呈现,因此您应该等待它出现,元素可能在某些iframe中,等等,当我不知道您的页面如何工作时,很难说。

但是,如果您要上载某些内容,则应在该按钮上执行sendKeys() (带有要上载的文件路径),而不要click()它。 这就是硒上传的工作方式。

我已经解决了-驱动程序在侧面板上打开一个选项卡,并且该按钮位于选项卡中。 在单击选项卡和出现按钮之间似乎有几毫秒的延迟,因此我添加了一个等待,直到元素可单击,并且似乎可以正常工作。

wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@id='wsUpload1']"))).click()

可能性

  1. 页面中具有相同ID的重复Web元素。
  2. 元素可能在框架中。 您需要切换到相框
  3. 在页面加载之前尝试访问Web元素。请等待一些时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM