我有下面显示的按钮(图片和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:消息:没有这样的元素:无法找到元素:{&#34;方法&#34;:&#34; xpath&#34;,&#34;选择器&#34;: &#34; //输入[@id =&#34; wsUpload1&#34;]&#34;}
答案 0 :(得分:1)
不确定为什么找不到您的按钮,也许是因为引号(虽然在这种情况下它会显示错误),请尝试driver.find_element_by_xpath(".//input[@id='wsUpload1']")
并查看它是否有效。我不确定你的按钮是否已在页面上呈现,或者你以某种方式触发它,所以它还不存在?
引发NoSuchElementException
是因为您的目标元素无法在该页面上找到,可能是您在错误的页面上,元素尚未呈现,因此您应该等待它出现,元素可能是在某些iframe等中,当我不知道你的页面是如何工作的时候很难说。
但是,如果您尝试上传某些内容,则应在该按钮上执行sendKeys()
(包含您尝试上传的文件路径),而不是click()
。这就是selenium上传的工作原理。
答案 1 :(得分:1)
我已经解决了 - 驱动程序在侧面板上打开一个标签,按钮位于标签中。单击选项卡和出现的按钮之间似乎有几毫秒的延迟,所以我添加了一个等待,直到元素可点击,这似乎有效。
wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@id='wsUpload1']"))).click()
答案 2 :(得分:1)
可能性