如何使用 Selenium 和 Python 在不同的 div 中单击第二个 href 文本
How to click second href text in different div using Selenium and Python
我尝试使用 selenium 单击文本。
这是 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()
这个给了我错误..
请帮助我谢谢..!
您可以使用下面的 xpath 获取 link 和 Day History 下的文本 2:
dayLink = driver.find_element_by_xpath('//div[@id="boxDayHistory"]//a[.= "2"]')
driver.find_element_by_link_text("2")
查找具有给定文本的 first link。那就是 boxTimeHistory
里面的 link。
尝试
driver.find_element_by_css_selector("#boxDayHistory .btnMove").click()
要从 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
我尝试使用 selenium 单击文本。 这是 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()
这个给了我错误..
请帮助我谢谢..!
您可以使用下面的 xpath 获取 link 和 Day History 下的文本 2:
dayLink = driver.find_element_by_xpath('//div[@id="boxDayHistory"]//a[.= "2"]')
driver.find_element_by_link_text("2")
查找具有给定文本的 first link。那就是 boxTimeHistory
里面的 link。
尝试
driver.find_element_by_css_selector("#boxDayHistory .btnMove").click()
要从 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