簡體   English   中英

python 中的 selenium。 試圖 select 元素

[英]selenium in python. trying to select element

更新:我在原始帖子中發現了導致問題的原因,但不知道如何解決。 這是我的更多代碼。 我首先進行了搜索,然后我在 firefox 中的頁面跳轉到 www.flickr.com/searc/?text=volleybal。 但顯然我的瀏覽器 object 仍然位於 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()

原帖:

我正在試驗 selenium,我想 select 以下元素:

<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")

我怎樣才能 select 這個元素?

您可以在這里嘗試 XPath:

s = browser.find_element_by_xpath("//li[contains(@class, 'style-button')]")

希望這個對你有幫助。

解決了。 s.submit() browser.refresh() )

最好的選擇是使用絕對 xpath 該按鈕將是:

/html[1]/body[1]/div[1]/div[1]/div[3]/div[1]/div[1]/div[1]/div[2]/ul[1]/li[3]

此外,我發現有時頁面沒有加載,selenium搜索元素,導致錯誤。 您可以等待元素出現。 您可以在此處找到更多信息。

結合這些,您的代碼將是:

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()

您的代碼完美運行

嘗試為您使用的操作系統下載最新版本的geckodriver並設置您的executable_path

它應該像這樣

browser = webdriver.Firefox(executable_path="./geckodriver")

並再次嘗試運行您改進的代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM