Python Can';无论我如何尝试,都无法在Selenium中通过Xpath找到元素

Python Can';无论我如何尝试,都无法在Selenium中通过Xpath找到元素,python,selenium,Python,Selenium,这是我第一次尝试Selenium,我试图创建一个程序,复制我的剪贴板并将其粘贴到soundcloud downloader网站,但在更改页面后我无法找到元素。这是我的代码: driver = webdriver.Chrome() driver.get('https://scdownloader.io/') driver.set_page_load_timeout(45) # driver.implicitly_wait(60) box = driver.find_element_by_xpat

这是我第一次尝试Selenium,我试图创建一个程序,复制我的剪贴板并将其粘贴到soundcloud downloader网站,但在更改页面后我无法找到元素。这是我的代码:

driver = webdriver.Chrome()
driver.get('https://scdownloader.io/')
driver.set_page_load_timeout(45)

# driver.implicitly_wait(60)
box = driver.find_element_by_xpath("//form/div/input") #text box
box.click()
box.send_keys(Keys.CONTROL, 'v')

nxt = driver.find_element_by_xpath("//form/button") #convert button
nxt.click()

driver.refresh()
driver.implicitly_wait(10) # seconds
driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))

dl = driver.find_element_by_xpath("//div[@id='conversionForm']/form/button")
dl.click()
问题在于查找dl,我试图解决它,尝试刷新,尝试使用chrome中的selenium插件找到的其他xpath地址,并尝试切换到iframe,但老实说,我不确定是否存在iframe


任何帮助都将不胜感激

您试图访问的页面不包含任何iframe。您不需要切换到iframe来单击下载按钮

您提供的代码将剪贴板粘贴到输入字段中,然后单击convert按钮。单击convert按钮加载一个不同的URL,该URL不显示convert按钮。但是您的
dl
变量包含convert按钮元素引用。您已经为
dl
变量再次使用了convert按钮的XPath。单击“转换”按钮后,下一页将看不到该按钮。这就是你找不到按钮的原因

另外,使用显式等待而不是隐式等待

以下代码将打印下载链接。如果发布的链接无效并且没有下载链接,它将打印“无效链接”。
result
变量包含一个列表。它用于检查结果是否可见,而不会出现任何异常。要获取下载链接,请使用按钮
resutl[0]

试试这个:

driver.get('https://scdownloader.io/')
wait=WebDriverWait(驱动程序,20)
box=wait.until(EC.element可点击((By.XPATH,//div[@id='conversionForm']]/form/div/input)))#文本框
box.send_键(key.CONTROL,'v')
nxt=wait.until(EC.element可点击((By.XPATH,//div[@id='conversionForm']]/form/button)))#convert按钮
nxt.click()
wait.until(位于((By.XPATH,//div[@id='result']))的元素的EC.visibility_)
结果=驱动程序。通过xpath(“div[@class='searchboxholder']//a”)查找元素
如果(len(结果)>0):
打印(结果[0]。获取属性(“href”))
其他:
打印(“无效链接”)
要使用WebDriverWait,您必须导入以下内容:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

提供html代码查找XPath很有帮助您可以通过打印检查页面中是否有iframe(len(driver.find\u elements\u by\u tag\u name(“iframe”))。感谢您的帮助,您提供的代码确实为我提供了下载链接令牌,但我不明白我是如何实际下载该文件的。如果我使用
结果[0]。单击()
会打开令牌链接,但下载实际上并不像我单击按钮那样启动。您必须给浏览器时间启动和下载文件<代码>结果[0]。单击()开始下载。如何使用selenium处理文件下载是一个完全不同的问题。