如何找到包含特定类值的元素?

时间:2019-02-21 10:07:09

标签: python selenium

如果该类在该类中包含更多值,则脚本无法找到元素。 例如,此类:

<a class="a-link-normal s-access-detail-page  s-color-twister-title-link a-text-normal">

我只想使用类s-access-detail-page来查找此元素。

通过查找这样的元素,我得到一个找不到该元素的错误:

find_element_by_css_selector("a[class*='s-access-detail-page']")

如果我正在寻找具有包含以下内容的类的元素,则该问题:

a-link-normal a-text-normal

页面上的课程

解析网址为Amazon:https://www.amazon.com/s?k=smart+watches&page=1 需要获取产品网址。

3 个答案:

答案 0 :(得分:1)

您只能使用以下CSS选择器:

.s-access-detail-page

希望对您有帮助!

答案 1 :(得分:0)

尝试任何一种方法。这应该可行。

validationSchema: Yup.object({

idRisk: Yup.number().required(),

dateB: Yup.mixed().when("idRisk", {
is: Risk.PRESENT,
then: Yup.mixed().required(),
otherwise: Yup.mixed()
}),

dateA: Yup.mixed().when("idRisk", {
is: Risk.PRESENT,
then: Yup.mixed().required(),
otherwise: Yup.mixed()
})
.when(["dateA", "dateB"],
(dateA, dateB) => {
if (dateA.isBefore(dateB))
return this.required();
}
)
})

OR

find_element_by_css_selector("a.a-link-normal")

OR

find_element_by_css_selector(".a-link-normal")

OR

find_element_by_css_selector("a.s-access-detail-page")

答案 2 :(得分:0)

确保您可以等待,您可以只使用一个简单的类选择器

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

url = 'https://www.amazon.com/s?k=smart+watches&page=1'
d = webdriver.Chrome()
d.get(url)
links = WebDriverWait(d,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".s-access-detail-page")))
linkUrls = [link.get_attribute('href') for link in links]
print(linkUrls)