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)