others - python - selenium里我怎样才能找到包含id中某些字符串的元素?

时间:

你可以在xpath或css选择器中使用contains()starts-with()方法。

另外,要从元素获取文本,你必须使用find_element方法之外的.text

XPath :


retweets = driver.find_elements_by_xpath("//span[starts-with(@id,'profile-tweet-action-retweet-count-area-')]")



或者


retweets = driver.find_elements_by_xpath("//span[contains(@id,'profile-tweet-action-retweet-count-area-')]")



CSS选择器:


retweets = driver.find_elements_by_css_selector("span[@id^='profile-tweet-action-retweet-count-area-']")



或者


retweets = driver.find_elements_by_css_selector("span[@id*='profile-tweet-action-retweet-count-area-']")



你必须迭代列表以获取所有元素然后使用.text获取元素的文本

另外,CSS选择器不应该有// ,我已经修改了相应的代码。

Css选择器将为:


span[id*="profile-tweet-action-retweet-count-aria"] 



或者更好的css选择器的方式:


span[id^='profile-tweet-action-retweet-count-aria']



如果有多个条目,则可以使用find_elements方法,该方法将列出网页元素列表。

如果你不想要css选择器,并且希望坚持xpath :


//span[contains(@id,"profile-tweet-action-retweet-count-aria")]



代码:


list_retweet = driver.find_elements_by_xpath("//span[contains(@id,"profile-tweet-action-retweet-count-aria")]")



for retweet in list_retweet:


 print(retweet.text)



使用WebdriverWait处理动态元素尝试以下Xpath或Css选择器


element=WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.XPATH,'//span[@class="ProfileTweet-actionCountForAria"][starts-with(@id,"profile-tweet-action-retweet-count-aria-")]')))


print(element.text)



或者


element1=WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'span.ProfileTweet-actionCountForAria[id^="profile-tweet-action-retweet-count-aria-"]')))


 print(element1.text)



请注意,你需要使用下列导入。


from selenium.webdriver.support.ui import WebDriverWait


from selenium.webdriver.support import expected_conditions as EC


from selenium.webdriver.common.by import By



你可以这样做:


element = driver.find_element_by_id("profile-tweet-action-retweet-count-area")



或者你可以试试:


element = driver.find_element_by_partial_link_text("profile-tweet-action-retweet-count-area")



也务必看一下这个 ,它是selenium脚本的用例,它会对你有很大的帮助,

...