如何按相同ID而不同类的按钮?

时间:2017-09-14 16:03:30

标签: python selenium selenium-webdriver webdriver selenium-chromedriver

我正在尝试使用selenium webdriver来点击其他类中的按钮。网页如下:



<div class="fade tab-pane" id="mm9-tab-content" role="tabpanel">
  <div class="button-submit">
    <button class="btn btn-primary btn-lg btn-block post" id="download" type="button">Download</button>
  </div>
</div>

<div class="fade tab-pane" id="dm3-tab-content" role="tabpanel">
  <div class="button-submit">
    <button class="btn btn-primary btn-lg btn-block post" id="download" type="button">Download</button>
  </div>
</div>
&#13;
&#13;
&#13;

数据分为2个类mm9-tab-contentdm3-tab-content。我希望系统点击dm3-tab-content中的下载按钮。

我尝试使用

    driver.find_element_by_xpath('xpath = (//*@id="download")[1]').click()

获取download的第二个实例,但它似乎无法正常工作。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

如果你知道按钮出现的顺序以及你想要使用的按钮,你可以使用find_elements_by_css_selector找到id =“download”的所有元素:

buttons = driver.find_elements_by_css_selector('#download')

然后,您可以按顺序访问每个按钮。

答案 1 :(得分:0)

点击mm9-tab-content class使用

下的按钮
if where1 in ["shops", "Shops", "shop", "Shop"]:
    # Blah Blah

点击dm3-tab-content class使用

下的按钮
driver.find_element_by_css_selector('#mm9-tab-content #download').click()

答案 2 :(得分:0)

您的XPath似乎无效。请尝试以下

driver.find_element_by_xpath('(//*[@id="download"])[2]').click()

请注意,与Python不同,在XPath节点中,索引从1开始,因此第二个元素应该具有索引[2]