如何过滤具有相同类的元素?
<html>
<body>
<p class="content">Link1.</p>
</body>
<html>
<html>
<body>
<p class="content">Link2.</p>
</body>
<html>
Run Code Online (Sandbox Code Playgroud)
Zyg*_*ygD 53
By.CLASS_NAME尚未提及:
from selenium.webdriver.common.by import By
driver.find_element(By.CLASS_NAME, "content")
Run Code Online (Sandbox Code Playgroud)
这是可以在 By 中用作定位器的属性列表:
CLASS_NAME
CSS_SELECTOR
ID
LINK_TEXT
NAME
PARTIAL_LINK_TEXT
TAG_NAME
XPATH
Lit*_*nda 41
您可以尝试class = "content"使用find_elements_by_class_name获取所有元素的列表:
a=[];
a = driver.find_elements_by_class_name("content");
Run Code Online (Sandbox Code Playgroud)
然后,您可以单击您要查找的链接.
Deb*_*anB 18
根据 HTML:
<html>
<body>
<p class="content">Link1.</p>
</body>
<html>
<html>
<body>
<p class="content">Link2.</p>
</body>
<html>
Run Code Online (Sandbox Code Playgroud)
两(2)个<p>元素具有相同的 class content。
因此,要过滤具有相同类的元素content并创建一个列表,您可以使用以下任一定位器策略:
使用class_name:
elements = driver.find_elements_by_class_name("content")
Run Code Online (Sandbox Code Playgroud)
使用css_selector:
elements = driver.find_elements_by_css_selector(".content")
Run Code Online (Sandbox Code Playgroud)
使用xpath:
elements = driver.find_elements_by_xpath("//*[@class='content']")
Run Code Online (Sandbox Code Playgroud)
理想情况下,在元件上点击你需要引起WebDriverWait的visibility_of_all_elements_located(),你可以使用以下的定位策略:
使用CLASS_NAME:
elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "content")))
Run Code Online (Sandbox Code Playgroud)
使用CSS_SELECTOR:
elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".content")))
Run Code Online (Sandbox Code Playgroud)
使用XPATH:
elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//*[@class='content']")))
Run Code Online (Sandbox Code Playgroud)
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
Run Code Online (Sandbox Code Playgroud)
您可以在以下位置找到一些相关讨论:
使用nth-child,例如:http://www.w3schools.com/cssref/sel_nth-child.asp
driver.find_element(By.CSS_SELECTOR, 'p.content:nth-child(1)')
Run Code Online (Sandbox Code Playgroud)
或http://www.w3schools.com/cssref/sel_firstchild.asp
driver.find_element(By.CSS_SELECTOR, 'p.content:first-child')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
81731 次 |
| 最近记录: |