Python:为什么driver.find_element_by_class_name没有给出这样的元素:无法定位元素



目前我正在与Selenium合作,试图使用Chrome中的"Inspect"正确识别元素。在某些情况下,我要单击的某些按钮仅由类定义,但某些类无法使用"driver.find_element_by_class_name"找到。

这是我从Chrome检索的代码的平静:

<td class="x-toolbar-cell" id="ext-gen1328" role="menuitem">
<table id="ImportMenuSmartExpReport" cellspacing="0" class="x-btn grayBtn x-btn-text-icon" role="presentation" style="width: auto;">
<tbody class="x-btn-small x-btn-icon-small-left">
<tr>
<td class="x-btn-tl"><i>&nbsp;</i></td>
<td class="x-btn-tc"></td>
<td class="x-btn-tr"><i>&nbsp;</i></td>
</tr>
<tr>
<td class="x-btn-ml"><i>&nbsp;</i></td>
<td class="x-btn-mc"><em class="" unselectable="on"><button type="button" id="ext-gen1329" class=" x-btn-text menu_import2">Import Expenses</button></em></td>
<td class="x-btn-mr"><i>&nbsp;</i></td>
</tr>
<tr>
<td class="x-btn-bl"><i>&nbsp;</i></td>
<td class="x-btn-bc"></td>
<td class="x-btn-br"><i>&nbsp;</i></td>
</tr>
</tbody>
</table>
  1. 我需要点击"导入费用"按钮,它是"x-btn-text menu_import2"类的一部分。我不能在这里使用XPATH或ID,因为它是不同提交表单的动态值,它有不同的值。所以我尝试使用类:"driver.find_element_by_class_name("x-btn-text menu_import2"("然而,它给了我一个错误:

Traceback(最近一次通话最后一次(:文件"<pyshell#23>";,第1行,在driver.find_element_by_class_name("x-btn-text menu_import2"(文件";C: \Users\ataranov\AppData\Local\Programs\Python38\lib\site packages\selenium\webdriver\remote\webdriver.py",第564行,在find_element_by_class_name中return self.find_element(by=by.CLASS_NAME,value=NAME(文件";C: \Users\ataranov\AppData\Local\Programs\Python38\lib\site packages\selenium\webdriver\remote\webdriver.py",第976行,在find_element中return self.execute(Command.FIND_ELEMENT{文件";C: \Users\ataranov\AppData\Local\Programs\Python38\lib\site packages\selenium\webdriver\remote\webdriver.py",第321行,执行中self.error_handler.check_response(响应(文件";C: \Users\ataranov\AppData\Local\Programs\Python38\lib\site packages\selenium\webdriver\remote\errorhandler.py",第242行,在check_response中引发exception_class(消息、屏幕、堆栈(selenium.com.mon.exceptions.InvalidSelectorException:消息:无效选择器:指定了无效或非法的选择器(会话信息:chrome=89.0.4389.90

  1. 同时,我可以毫无问题地找到'x-toolbar-cell'class:''driver.find_element_by_class_name("x-toolbar-cell"('''
  • 用"find_element_by_class"查找我需要的类有什么问题?为什么它适用于一个类,而不适用于另一个类
  • 它是否与"x-btn-text menu_import2"被封闭到其他类的事实有关?如果是这样的话,如何找到包到其他类的类
  • 在这种情况下,任何其他查找对象的方法,如使用按钮文本标题"导入费用">
driver.find_element_by_css_selector("button.x-btn-text.menu_import2")

多个类名需要这样处理。class_name只处理一个类标识符。

要通过文本查找,您可以。

driver.find_element_by_xpath("//button[.='Import Expenses']")

相关内容

  • 没有找到相关文章

最新更新