当前位置: 首页 > 知识库问答 >
问题:

Selenium Python-通过带有空格的类名查找元素

红朝
2023-03-14

我正在编写一个Python程序,该程序使用Selenium导航到高级搜索页面上的搜索框中并在搜索框中输入信息。本网站使用 Javascript,每次加载网站时,每个搜索框的 ID 和名称都会略有变化,但类名保持不变。类名经常被重用,所以我的目标是使用find_elements_by_class_name(类名),然后通过该列表编制索引。

例如,一个框的类名是 x-form-text x-form-字段 x-表单-num-字段 x-form-空字段,但我不能使用它,因为 selenium 认为它是一个复合类名并抛出一个错误。如果我只使用它的一部分,例如x表单文本,它找不到元素。我的希望是找到一种方法来允许空格,或者,如果不能做到这一点,找到一种方法来搜索类名包含一段没有空格的文本的所有元素,例如x-form-text

任何帮助或想法将不胜感激!

编辑:

我试了一下这段代码:< code > quant minclass = ' x-form-text . x-form-field . x-form-num-field . x-form-empty-field ' quant min = ' 25 ' browser . find _ elements _ by _ CSS _ selector(quant minclass)[0]。send_keys(quantmin)

但是得到一个错误,列表索引超出了范围,这意味着它找不到任何东西。我检查了元素,这绝对是它的类名,所以我不确定如何继续。

共有3个答案

晏卓君
2023-03-14

如果您有带空格的类名(或其他 attrs),例如:

<div class="target with space or maybe another-long-text">Test 123</div>

这将工作:

driver.find_element_by_xpath("//div[@class='target with space or maybe another-long-text']")
陶福
2023-03-14

尝试将类名转换为CSS选择器。
使用CSS选择器,名为x-form-text x-form-field x-form-num-field的类变成. x-form-text. x-form-field. x-form-num-field
所以基本上只需用点替换空格,您就可以开始了。

通学真
2023-03-14

这些是多个类,而不是带有空格的单个类,只需将所有类一起使用。

driver.find_element_by_css_selector('.class1.class2.class3')

在CSS选择器中,点是一个类,您可以连接任何数字类名

 类似资料:
  • 问题内容: 我有一个只具有href值作为属性的锚标记的href值。现在,我想在页面中找到与我的href值具有相同值的元素,然后单击它。我找不到使用标准selenium方法执行此操作的任何方法。如何执行此操作?基本上,这些是我找到的功能,但似乎无法使用其中任何一个: 问题答案: 您可以使用find_element_by_xpath功能。

  • 问题内容: 我想识别该网络元素。它仅定义了这两个类。我不能执行以下操作,因为不使用空格分隔的值。什么是替代品? 问题答案: 我认为巴拉克·马诺斯的答案不能完全解释这一点。 想象一下,我们只有以下几个元素: XPath如何匹配 只匹配1个(完全匹配),巴拉克的答案 比赛1,比赛2和比赛3(比赛类别包含,课程顺序很重要) 匹配1、2、3和4(只要元素具有class 和) 同样,在这种情况下,Css S

  • 我还尝试使用CSSSelector: 但WebDriver不断抛出一个异常,说明它无法找到该元素。有什么建议可以是什么问题吗?

  • 问题内容: 精简版: 我想使用Nest编写一个elasticsearch查询,以获取已被索引的完整索引项(在我的情况下为自定义类型)。该查询受[somestring] + *(即String.StartsWith())的术语查询的约束,其中[somestring]可能包含空格,也可能不包含空格。 这与由于我需要检索完整对象而不是字符串建议而不同。 到目前为止,我已经尝试过: 当我查询没有空格的文本

  • 问题内容: 以下定位技术之间有什么区别? 而且,从 性能角度来看 ,哪种方法是通过id定位元素的最快方法? 问题答案: 您的问题很难回答,肯定会给出一个结论性的答案。实际上,我很想将此问题标记为“太宽泛”,其他答案和评论也支持该问题。 以您的为例。纵观Selenium来源, 大多数 驱动程序只是获取您提供的ID,然后将其传递给有线协议: 如您所知,每个浏览器供应商都在单独的二进制文件中实现自己的有

  • 请帮助我,我正在尝试选择一个图片,这是一个链接(一个网站上的培训师) 这是我的代码: