如何使用Selenium和Python单击不同div中的第二个href文本

时间:2019-03-02 11:55:26

标签: python selenium xpath css-selectors webdriverwait

我尝试使用硒单击文本。 这是html的样子。

<div id="boxTimeHistory">
<div class="tableB selectTop pt0">
<div class="tab">..</div>
<div class="box_contents">
    <div>
       <table>..</table>
       <div class="paging">
                <strong>1</strong>
                <a href="javascript:;" class="btnMove">2</a>
                <a href="javascript:;" class="btnMove">3</a>
                <a href="javascript:;" class="btnMove">4</a>
                <a href="javascript:;" class="btnMove">5</a>
                <a href="javascript:;" class="btnMove">6</a>
                <a href="javascript:;" class="btnMove">7</a>
                <a href="javascript:;" class="btnMove">8</a>
                <a href="javascript:;" class="btnMove">9</a>
                <a href="javascript:;" class="btnMove">10</a>          
            <a href="javascript:;" class="btnNext" title="다음">다음</a>
            <a href="javascript:;" class="btnLast" title="마지막">마지막</a>
        </div>
</div>
</div>
</div>
</div>
....
....
....
<div id="boxDayHistory">
<div class="tableB selectTop pt0">
<div class="tab">..</div>
<div class="box_contents">
    <div>
       <table>..</table>
       <div class="paging">
                <strong>1</strong>
                <a href="javascript:;" class="btnMove">2</a>
                <a href="javascript:;" class="btnMove">3</a>
                <a href="javascript:;" class="btnMove">4</a>
                <a href="javascript:;" class="btnMove">5</a>
                <a href="javascript:;" class="btnMove">6</a>
                <a href="javascript:;" class="btnMove">7</a>
                <a href="javascript:;" class="btnMove">8</a>
                <a href="javascript:;" class="btnMove">9</a>
                <a href="javascript:;" class="btnMove">10</a>          
            <a href="javascript:;" class="btnNext" title="다음">다음</a>
            <a href="javascript:;" class="btnLast" title="마지막">마지막</a>
        </div>
</div>
</div>
</div>
</div>

我只想点击 boxDayHistory 部分中的第二个href文本,然后 不高于一个。

我尝试了

driver.find_element_by_link_text("2").click()

但是,它单击了第一个,div id =“ boxTimdHistory”

我也累了,

links = driver.find_element_by_link_text("2")
for link in links:
   link.click()

这给了我一个错误。

请帮助我,谢谢..!

3 个答案:

答案 0 :(得分:1)

driver.find_element_by_link_text("2")查找具有给定文本的第一链接。那就是boxTimeHistory中的链接。

尝试

driver.find_element_by_css_selector("#boxDayHistory .btnMove").click()

答案 1 :(得分:1)

要从 boxDayHistory 中单击文本为 2 的元素,可以使用以下任一解决方案:

  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div#boxDayHistory div.paging a:first-child"))).click()
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@id='boxDayHistory']//a[@class='btnMove' and text()='2']"))).click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

答案 2 :(得分:0)

您可以使用以下xpath在“历史记录”下获得带有文本2的链接:

dayLink = driver.find_element_by_xpath('//div[@id="boxDayHistory"]//a[.= "2"]')