2017-04-05 32 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