2017-04-05 62 views
0

我想在Python使用下面的代碼在網頁中的元素,自動點擊使用:查找元素的ID在網頁中硒

driver.find_element_by_id("book appointment").click() 

網頁快照如下: : enter image description here

我的問題是我無法在頁面源中找到「Book Appointment」文本來提取其ID。我如何找到它的ID?

+3

使用chrome dev工具或firebug firefox擴展來檢查元素。在Chrome中,只需右鍵單擊該元素並選擇「檢查」。它會把你帶到dom中的元素。然後你可以看到這個元素是否有'ID',或者你必須用其他屬性來標識它。如果這足以回答你的問題,讓我知道,我會作爲答案發布。 – mrfreester

+1

我們需要看到頁面源代碼 –

+0

你可以添加你想要找到的那個按鈕的html代碼 – NarendraR

回答

2

您提供的html代碼不包含此元素的任何Id屬性因此,無法通過ID找到元素。或者,您可以使用xpath選擇器定位帶有文本的元素。請嘗試下面的代碼以找到相同的代碼

driver.find_element_by_xpath("//a[contains(.,'Book Appointment')]") 
+0

謝謝。但是這段代碼引發了以下錯誤:'selenium.common.exceptions.NoSuchElementException:消息:無法找到元素://a[contains(.''Book Appointment')]' – Hossein

+1

我發現了什麼問題。我應該等到頁面完全加載。 – Hossein

1

find_element_by_id需要id作爲輸入。您正在給文本內容作爲輸入。

你可能想嘗試一些不同的選擇器。可能是find_element_by_link_text

有多種策略來定位頁面中的元素。

Methods to locate elements in a page:

  • find_element_by_id
  • find_element_by_name
  • find_element_by_xpath
  • find_element_by_link_text
  • find_element_by_partial_link_text
  • find_element_by_tag_name
  • find_element_by_class_name
  • find_element_by_css_selector

To find multiple elements

  • find_elements_by_name
  • find_elements_by_xpath
  • find_elements_by_link_text
  • find_elements_by_partial_link_text
  • find_elements_by_tag_name
  • find_elements_by_class_name
  • find_elements_by_css_selector

供您參考的每個選擇器可以參考the link

+0

是的,我給了''預約'就像指標一樣。我嘗試過'find_element_by_link_text',但它不起作用。 – Hossein

+1

@Hsesein鏈接文本是*不是*''預約書籍'',而是'   預約書籍''。 –

+0

@Hossein你用xpath試過嗎?它應該工作。首先嚐試使用固定的xpath,然後嘗試使xpath通用。這又取決於網頁。 – Haranadh