社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Roadside Romeozz • 5 年前 • 1475 次点击  

我正在进行基于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
 
1475 次点击  
文章 [ 3 ]  |  最新文章 5 年前
Robert
Reply   •   1 楼
Robert    6 年前

尝试

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    6 年前

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

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    6 年前

解决方案

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