Select Selenium中部分相同的长元素中名称较短的元素
Select the element with shorter name among long ones with partially same in Selenium
所以我想 select 一个元素 class 名称,问题是有 2 个元素具有相同的名称,但其中一个元素有另外的东西:
<div class="ads-title ads-year">
۱۳۹۴ -
<span>بجنورد</span></div>
<div class="ads-title">پژو پارس ELX XUM</div>
我写的代码只能得到 'ads-title' :
driver = webdriver.Chrome(r"./chromedriver")
driver.get('https://mashinbank.com/%D8%AE%D8%B1%DB%8C%D8%AF-%D8%AE%D9%88%D8%AF%D8%B1%D9%88')
names = driver.find_elements_by_class_name('ads-title')
for name in names:
print(name.text)
但它给了我两者的内容,我的问题是如何将其缩小到 'ads-title' 不包含在 'ads-title ads-year' 中?
提前谢谢你。
您可以将其替换为 css_selector
以仅定位一个匹配节点。
div[class='ads-title']
在代码中:-
names = driver.find_elements_by_css_selector("div[class='ads-title']")
for name in names:
print(name.text)
但是我看到上面css selector
,有15个匹配节点。
如果您正在寻找特定节点,即
<div class="ads-title">پژو پارس ELX XUM</div>
那么你可以使用这个xpath
//div[@class='ads-title' and text()='پژو پارس ELX XUM']
在代码中:
driver.get('https://mashinbank.com/%D8%AE%D8%B1%DB%8C%D8%AF-%D8%AE%D9%88%D8%AF%D8%B1%D9%88')
names = driver.find_elements_by_xpath("//div[@class='ads-title' and text()='پژو پارس ELX XUM']")
for name in names:
print(name.text)
所以我想 select 一个元素 class 名称,问题是有 2 个元素具有相同的名称,但其中一个元素有另外的东西:
<div class="ads-title ads-year">
۱۳۹۴ -
<span>بجنورد</span></div>
<div class="ads-title">پژو پارس ELX XUM</div>
我写的代码只能得到 'ads-title' :
driver = webdriver.Chrome(r"./chromedriver")
driver.get('https://mashinbank.com/%D8%AE%D8%B1%DB%8C%D8%AF-%D8%AE%D9%88%D8%AF%D8%B1%D9%88')
names = driver.find_elements_by_class_name('ads-title')
for name in names:
print(name.text)
但它给了我两者的内容,我的问题是如何将其缩小到 'ads-title' 不包含在 'ads-title ads-year' 中? 提前谢谢你。
您可以将其替换为 css_selector
以仅定位一个匹配节点。
div[class='ads-title']
在代码中:-
names = driver.find_elements_by_css_selector("div[class='ads-title']")
for name in names:
print(name.text)
但是我看到上面css selector
,有15个匹配节点。
如果您正在寻找特定节点,即
<div class="ads-title">پژو پارس ELX XUM</div>
那么你可以使用这个xpath
//div[@class='ads-title' and text()='پژو پارس ELX XUM']
在代码中:
driver.get('https://mashinbank.com/%D8%AE%D8%B1%DB%8C%D8%AF-%D8%AE%D9%88%D8%AF%D8%B1%D9%88')
names = driver.find_elements_by_xpath("//div[@class='ads-title' and text()='پژو پارس ELX XUM']")
for name in names:
print(name.text)