Как щелкнуть по второму href-тексту в другом div, используя Selenium и Python - PullRequest
0 голосов
/ 02 марта 2019

Я пытался щелкнуть текст, используя селен.вот как выглядит 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>

Я хочу щелкнуть только второй текст href из раздела boxDayHistory , но не выше 1.

Я пробовал

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 голосов
/ 02 марта 2019

driver.find_element_by_link_text("2") находит первую ссылку с заданным текстом.Вот ссылка внутри boxTimeHistory.

Попробуйте

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

0 голосов
/ 02 марта 2019

Чтобы щелкнуть элемент с текстом как 2 из boxDayHistory , можно использовать любое из следующих решений:

  • Использование 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
    
0 голосов
/ 02 марта 2019

Вы можете получить ссылку с текстом 2 в разделе История дня, используя xpath ниже:

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