如何单击与python中其他元素具有相同类的元素

时间:2019-01-05 06:10:45

标签: python-3.x selenium

我正在基于python的硒自动化测试中工作,并且是该技术的新手。我需要单击下面的代码中的“活动报告”。

 <a href="../reports/ActivityReport.aspx">
 <div class="col-sm-2 col-md-2 col-lg-2 menu-button">Activity Report</div>
 </a> ---

相同的班级名称

<div class="col-sm-2 col-md-2 col-lg-2 menu-button">Reports</div>
<div class="col-sm-2 col-md-2 col-lg-2 menu-button">Activity Report</div>

在尝试单击它时,我遇到了这个问题。请给我一个解决方案。 预先感谢。

  Traceback (most recent call last):
  File "F:/Python/test1/T1.py", line 21, in <module>
     driver.find_element_by_css_selector('#form1 > div:nth-child(3) > 
     div.row 
     > div > a:nth-child(2) > div').click()
  File "C:\Python36\selenium\webdriver\remote\webelement.py", line 80, in 
    click
self._execute(Command.CLICK_ELEMENT)
   File "C:\Python36\selenium\webdriver\remote\webelement.py", line 633, 
   in _execute
   return self._parent.execute(command, params)
File "C:\Python36\selenium\webdriver\remote\webdriver.py", line 321, in 
   execute
   self.error_handler.check_response(response)
File "C:\Python36\selenium\webdriver\remote\errorhandler.py", line 242, 
    in check_response
raise exception_class(message, screen, stacktrace)

3 个答案:

答案 0 :(得分:0)

解决方案

driver.find_element_by_css_selector(css selector) # replace 'css selector' according to below

CSS选择器?

这使用了一个称为css选择器的东西,它可以唯一地标识网站中的元素。要找到我建议使用Google Chrome或Chromium的唯一CSS选择器,我还没有找到如何在Firefox中获取CSS选择器的方法。在Chrome中打开所需的网站,然后按 CTRL + Shift + C 打开检查器工具,然后单击要脚本执行的元素点击。之后,右键单击以蓝色突出显示的元素,然后选择Copy > Copy selector。这是一个屏幕截图,以防万一太麻烦了要选择哪个菜单项。

复制选择器

Copying the selector

答案 1 :(得分:0)

以下给出的代码段最适合您:

driver.find_element_by_xpath("//div[@class='col-sm-2 col-md-2 col-lg-2 menu-button'][contains(text(),'Activity R')]")

如果上面的方法不起作用,下面的方法也可以:

lst_menu = driver.find_elements_by_xpath("//div[@class='col-sm-2 col-md-2 col-lg-2 menu-button']")
for item in lst_menu:
    if (item.get_attribute("text") == 'Activity Report'):
        item.click()

答案 2 :(得分:0)

尝试

driver.find_element_by_xpath("//div[contains(text(), 'Activity Report')]")

或更激进的

driver.find_element_by_xpath("//div[contains(@class, 'col-sm-2') and contains(@class ,'col-md-2') and contains(@class ,'col-lg-2') and contains(@class, 'menu-button') and contains(text(), 'Activity Report')]")