更新:我在最初的帖子中发现了导致此问题的原因,但不知道如何解决。这是我的更多代码。我首先进行了搜索,然后我在firefox中的页面跳到了www.flickr.com/searc/?text=volleybal。 但显然我的浏览器对象仍然位于www.flickr.com。我该如何更新?
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('https://www.flickr.com')
s = browser.find_element_by_id('search-field')
s.send_keys('volleyball')
s.submit()
s = browser.find_element_by_class_name("style-button")
#s = browser.find_element_by_xpath("//li[@data-style-value = 'minimalism']")
s.click()
原始帖子:
我正在尝试硒,我想选择以下元素:
<li class="style-button minimalist" data-style-value="minimalism" data-tooltip-title="Minimalist" tabindex="0" role="button" aria-label="Minimalist">
我尝试了以下方法,但没有一个起作用:
s = browser.find_element_by_class_name("style-button minimalist")
s = browser.find_element_by_class_name("style-button.minimalist")
s = browser.find_element_by_css_selector("li.style-button.minimalist")
s = browser.find_element_by_css_selector(".style-button.minimalist")
如何选择此元素?
答案 0 :(得分:0)
您可以在这里尝试XPath:
s = browser.find_element_by_xpath("//li[contains(@class, 'style-button')]")
希望这会有所帮助。
答案 1 :(得分:0)
已解决。在browser.refresh()
之后添加了s.submit()
答案 2 :(得分:0)
最好的选择是使用 absolute xpath 。该按钮的名称为:
/html[1]/body[1]/div[1]/div[1]/div[3]/div[1]/div[1]/div[1]/div[2]/ul[1]/li[3]
此外,我发现有时页面未加载,硒搜索元素,这会导致错误。您可以等待元素出现。您可以找到更多信息here。
结合这些,您的代码将为:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Firefox()
browser.get('https://www.flickr.com/')
s = browser.find_element_by_id('search-field')
s.send_keys('volleyball')
s.submit()
s = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, "/html[1]/body[1]/div[1]/div[1]/div[3]/div[1]/div[1]/div[1]/div[2]/ul[1]/li[3]")))
s.click()
答案 3 :(得分:0)
您的代码运行完美
尝试为您使用的操作系统下载geckodriver的最新版本,然后设置executable_path
它应该这样
browser = webdriver.Firefox(executable_path="./geckodriver")
,然后再次尝试运行改进的代码