Python:删除Selenium中重复操作的重复代码

Python:删除Selenium中重复操作的重复代码,python,css,selenium,Python,Css,Selenium,我正在使用Python与Selenium一起工作,必须这样做: 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('#resul

我正在使用Python与Selenium一起工作,必须这样做:

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\u block\u sub\u header\u count
”。我想得到第四个的结果


有没有一个好的方法可以把它转换成代码?我不想要4条类似的线。我认为这不是一个好的代码实践。

只需使用
按css选择器查找元素()
(注意“s”)来查找与定位器匹配的多个元素,在您的情况下,css选择器:

results = driver.find_elements_by_css_selector('#results .page_block_sub_header_count')
results
将是一个
WebElement
实例的列表,您可以对其进行迭代,并获得(比如)文本:

for item in results:
    print(item.text)

只需使用
find\u elements\u by\u css\u 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)

此外,您还可以使用以下代码(仅举一例):


注:@alecxe的代码更适合使用。

您也可以使用以下代码(仅举一例):


注:@alecxe的代码使用起来更好。

如果没有
HTML
很难为您提供最合适的解决方案。从您的试用代码中我可以看出,您使用了:

driver.find_element_by_css_selector('#results .page_block_sub_header_count') 
这本质上意味着,id为
节点
作为
结果
至少有4个
子节点,类为
作为
页面块子标题计数
。因此,为了构造最合适的
css\u选择器
,我们缺少有关
标记名
的信息,该标记名包含类
页面块子标题计数
,该类将在
HTML DOM
中提供

但是,如果您
想要得到第四个的结果,您可以使用以下代码行:

elem = driver.find_element_by_css_selector('#results .page_block_sub_header_count:nth-of-type(4)') 

没有
HTML
就很难为您提供最合适的解决方案。从您的试用代码中我可以看出,您使用了:

driver.find_element_by_css_selector('#results .page_block_sub_header_count') 
这本质上意味着,id为
节点
作为
结果
至少有4个
子节点,类为
作为
页面块子标题计数
。因此,为了构造最合适的
css\u选择器
,我们缺少有关
标记名
的信息,该标记名包含类
页面块子标题计数
,该类将在
HTML DOM
中提供

但是,如果您
想要得到第四个的结果,您可以使用以下代码行:

elem = driver.find_element_by_css_selector('#results .page_block_sub_header_count:nth-of-type(4)') 

通过css选择器()查找元素怎么样?(注意附加的“s!”)如何
通过css\u选择器()查找元素?(注意附加的“s!”)OP只需要第四个(最后一个?)的。不需要循环,只需参考第四个
print(results[3].text)
@alecxe As OP
想要得到第四个元素的结果
为什么我们要求助于find_elements\uuuu?@DebanjanB我们没有提供,第n个类型或其他类似的选择器肯定也是一个选项。谢谢。OP只想要第四个(最后一个?)的。不需要循环,只需参考第四个
print(results[3].text)
@alecxe As OP
想要得到第四个元素的结果
为什么我们要求助于find_elements\uuuu?@DebanjanB我们没有提供,第n个类型或其他类似的选择器肯定也是一个选项。谢谢。@user3349993当你
想得到第四个的结果时,我不明白你为什么要求助于find_元素@user3349993当你
想得到第四个的结果时,我不明白你为什么要求助于find_元素_