Py学习  »  Python

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

Roadside Romeozz • 4 年前 • 695 次点击  

我正在进行基于python的selenium自动化测试,我是这项技术的新手,我需要从下面的代码中单击Activity Report。

 <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)
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50626
 
695 次点击  
文章 [ 3 ]  |  最新文章 4 年前
Robert
Reply   •   1 楼
Robert    5 年前

尝试

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')]")
Pooja
Reply   •   2 楼
Pooja    5 年前

下面给出的代码片段绝对适合您:

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()
Fizzlebert
Reply   •   3 楼
Fizzlebert    5 年前

解决方案

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

CSS选择器?

这使用了一个称为css选择器的东西,它能够唯一地标识网站中的元素。为了找到唯一的CSS选择器,我建议使用Google Chrome或Chromium,我还没有找到如何在Firefox中获得CSS选择器。在Chrome中打开所需的网站,然后按 控制 + 移位 + C类 打开inspector工具并单击要脚本单击的元素。在此之后,右键单击以蓝色突出显示的元素并选择 Copy > Copy selector . 这是一个屏幕截图,其中的菜单项选择,以防这是有点太罗嗦。

复制选择器

Copying the selector