如何解决当检测到1个以上具有相同类的输入时,使用Selenium上传文件
所以我的页面结构如下:
<ul>
<li>
<div>
<div>
<span class="buttonUpload" custom="call.js">Button Upload</span>
<input class="fa-cloud-upload" name="file" type="file" accept="">
</div>
</div>
</li>
<li>
<div>
<div>
<span class="buttonUpload" custom="call.js">Button Upload</span>
<input class="fa-cloud-upload" name="file" type="file" accept="">
</div>
</div>
</li>
<li>
<div>
<div>
<span class="buttonUpload" custom="call.js">Button Upload</span>
<input class="fa-cloud-upload" name="file" type="file" accept="">
</div>
</div>
</li>
</ul>
我想使用send_keys()
从硒中仅将文件上传到第一个输入标签,但由于某种原因它不起作用,如果刷新后仅显示单个li标签,则代码起作用,我的代码如下: / p>
view_videos = WebDriverWait(driver,self.latency).until(EC.visibility_of_all_elements_located(
(By.CSS_SELECTOR,"a[i18n='i18n.openLink']")))
for i in range(len(view_videos)):
# some other script here
uploadme = "/home/user/myfile.png"
#script to upload
driver.find_element_by_css_selector("input[class='fa-cloud-upload']").send_keys(str(uploadme))
我什至尝试驱动程序等待并选择具有选定数组的所有元素:
#script to upload
upload_first = WebDriverWait(driver,self.latency).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,"input[class='fa-cloud-upload']")))
upload_first[0].send_keys(str(uploadme))
但是什么也没发生,在上载第一个标签之后,我也执行了javascript擦除2个<li>
标签,但仍然无法上传,什么也没发生,我只想仅使用硒将其上传到第一个输入,有什么线索吗?
解决方法
尝试使用By.CLASS_NAME,'fa-cloud-upload'
或EC.presense_of_element_located((By.XPATH,'its xpath'))
您可以在F12面板中找到该元素的Xpath。检查该元素,然后在F12面板中右键单击它并复制-> Xpath。
要将字符序列发送到第一个<input>
标签而不是presence_of_all_elements_located()
,您必须为element_to_be_clickable()
引入WebDriverWait,并且可以使用以下Locator Strategies之一:
-
使用
CSS_SELECTOR
:WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"ul > li input.fa-cloud-upload"))).send_keys(str(uploadme))
-
使用
XPATH
:WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//ul/li//input[@class='fa-cloud-upload']"))).send_keys(str(uploadme))
-
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。