我使用Selenium在Python中工作,必须这样做:
elem = driver.find_element_by_css_selector('#results .page_block_sub_header_count')
elem = driver.find_element_by_css_selector('#results .page_block_sub_header_count')
elem = driver.find_element_by_css_selector('#results .page_block_sub_header_count')
elem = driver.find_element_by_css_selector('#results .page_block_sub_header_count')
我这样做是因为页面上有4个元素有这个CSS选择器" #results .page_block_sub_header_count
"。我希望得到第四个结果。
有没有一种方法可以将其放入代码中?我不想要4条类似的线条。我相信这不是一个很好的代码实践。
答案 0 :(得分:3)
只需使用find_elements_by_css_selector()
(注意“s”)来定位与定位符匹配的多个元素 - 在您的情况下为CSS选择器:
results = driver.find_elements_by_css_selector('#results .page_block_sub_header_count')
results
将是 WebElement
个实例的列表,您可以对其进行迭代,然后获取文字:
for item in results:
print(item.text)
答案 1 :(得分:1)
此外,您可以使用以下代码(只是一个案例):
cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
PS:@ alecxe的代码更适合使用。
答案 2 :(得分:1)
如果没有HTML
,很难为您提供最合适的解决方案。从我们尝试过的代码中可以看出,您已经使用过:
driver.find_element_by_css_selector('#results .page_block_sub_header_count')
这实际上意味着node
与id
results
至少有 4 子节点class
为的 page_block_sub_header_count
即可。因此,为了构建最合适的css_selector
,我们错过了有关 tagName
的信息,其中包含可用的课程 page_block_sub_header_count
在HTML DOM
。
如果您want to get the result of the 4th one
仍然可以使用以下代码行:
elem = driver.find_element_by_css_selector('#results .page_block_sub_header_count:nth-of-type(4)')