Python selenium 如何只循环包含特定 class 名称的行
Python selenium how to loop only over rows containing specific class name
设置:
我正在使用 Python + Selenium 来完成一些工作。
我有一个 table 具有以下 html,
<tbody>
<tr bgcolor="white" class="TRNORM TRCOLHEADER">...</tr>
<tr bgcolor="white" class="TRNORM cROW">...</tr>
<tr bgcolor="white" class="TRNORM cROW">...</tr>
<tr bgcolor="white" class="TRNORM">...</tr>
<tr bgcolor="white" class="TRNORM">...</tr>
</tbody>
然后我使用以下代码遍历行,
table = browser.find_element_by_css_selector('#formWrapper > tbody > tr:nth-child(3) > td > table > tbody')
for row in table.find_elements_by_xpath('tr'):
# code for row follows
问题
我只需要循环 class="TRNORM cROW"
。
我该怎么做?
使用以下 xpath 将 select 行仅包含 class="TRNORM cROW"
for row in table.find_elements_by_xpath('.//tr[@class="TRNORM cROW"]'):
或以下 css selector
将 select 行仅包含 class="TRNORM cROW"
for row in table.find_elements_by_css_selector("tr[class='TRNORM cROW']"):
要仅使用 class="TRNORM cROW"
遍历元素,您可以使用以下任一方法 :
使用css_selector
:
for row in browser.find_elements_by_css_selector("#formWrapper > tbody > tr:nth-child(3) > td > table > tbody tr.TRNORM.cROW"):
# code for row follows
使用xpath
:
for row in browser.find_elements_by_xpath("//td/table/tbody//tr[@class='TRNORM cROW']"):
# code for row follows
理想情况下,您必须为 visibility_of_all_elements_located()
引入 并且您可以使用以下任一项 :
使用CSS_SELECTOR
:
for row in WebDriverWait(browser, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "#formWrapper > tbody > tr:nth-child(3) > td > table > tbody tr.TRNORM.cROW"))) :
# code for row follows
使用XPATH
:
for row in WebDriverWait(browser, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//td/table/tbody//tr[@class='TRNORM cROW']"))):
# code for row follows
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
# code for row follows
设置:
我正在使用 Python + Selenium 来完成一些工作。
我有一个 table 具有以下 html,
<tbody>
<tr bgcolor="white" class="TRNORM TRCOLHEADER">...</tr>
<tr bgcolor="white" class="TRNORM cROW">...</tr>
<tr bgcolor="white" class="TRNORM cROW">...</tr>
<tr bgcolor="white" class="TRNORM">...</tr>
<tr bgcolor="white" class="TRNORM">...</tr>
</tbody>
然后我使用以下代码遍历行,
table = browser.find_element_by_css_selector('#formWrapper > tbody > tr:nth-child(3) > td > table > tbody')
for row in table.find_elements_by_xpath('tr'):
# code for row follows
问题
我只需要循环 class="TRNORM cROW"
。
我该怎么做?
使用以下 xpath 将 select 行仅包含 class="TRNORM cROW"
for row in table.find_elements_by_xpath('.//tr[@class="TRNORM cROW"]'):
或以下 css selector
将 select 行仅包含 class="TRNORM cROW"
for row in table.find_elements_by_css_selector("tr[class='TRNORM cROW']"):
要仅使用 class="TRNORM cROW"
遍历元素,您可以使用以下任一方法
使用
css_selector
:for row in browser.find_elements_by_css_selector("#formWrapper > tbody > tr:nth-child(3) > td > table > tbody tr.TRNORM.cROW"): # code for row follows
使用
xpath
:for row in browser.find_elements_by_xpath("//td/table/tbody//tr[@class='TRNORM cROW']"): # code for row follows
理想情况下,您必须为 visibility_of_all_elements_located()
引入
使用
CSS_SELECTOR
:for row in WebDriverWait(browser, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "#formWrapper > tbody > tr:nth-child(3) > td > table > tbody tr.TRNORM.cROW"))) : # code for row follows
使用
XPATH
:for row in WebDriverWait(browser, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//td/table/tbody//tr[@class='TRNORM cROW']"))): # code for row follows
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC # code for row follows