我想打开一个站点并单击一个按钮,所以我写了下面的代码:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://python.org')
elem = driver.find_element_by_id("downloads")
elem.click()
代码用给定的URL打开Firefox。它按照它的ID名称找到按钮,然后点击它。
现在的问题是,它在Firefox中无法正常运行。当我点击上述网站上的下载按钮时,我的Firefox中将会打开一个新链接。但是当代码被执行时,它会点击按钮,而不是按照我的方式点击按钮,就像它选择""选择"按钮而不是点击它。
奇怪的是,上面的代码与Chrome完美无缺:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://python.org')
elem = driver.find_element_by_id("downloads")
elem.click()
点击下载按钮,然后在Chrome中打开一个新链接。
我想知道,问题是什么?为什么代码适用于Chrome而不适用于Firefox?
顺便说一下,我运行Windows 7 64位和Python 2.7 32位。我的浏览器版本为Firefox 36,Chrome为41。
答案 0 :(得分:1)
我看到有一个子节点,您尝试单击的元素的锚标记。您需要单击锚标记才能导航到该链接。下面的代码为我工作
driver.find_element_by_css_selector("#downloads a").click()
答案 1 :(得分:0)
这似乎对我有用。请尝试:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://python.org')
elem = driver.find_element_by_link_text("Downloads")
elem.click()
对于chrome:
from selenium import webdriver
driver = webdriver.Chrome("res/chromedriver.exe")
driver.get('http://python.org')
elem = driver.find_element_by_link_text("Downloads")
elem.click()
答案 2 :(得分:0)
等待Downloads
链接变为可点击,移至元素并点击:
wait = WebDriverWait(driver, 10)
downloads = wait.until(EC.element_to_be_clickable((By.LINK_TEXT, "Downloads")))
ActionChains(driver).move_to_element(downloads).click().perform()
适用于Chrome和Firefox。