Selenium / Python - 带有空格的类名无法本地元素
Posted
技术标签:
【中文标题】Selenium / Python - 带有空格的类名无法本地元素【英文标题】:Selenium/Python - Class name with spaces unable to local element 【发布时间】:2019-04-10 12:31:53 【问题描述】:我无法找到某个元素。我正在尝试找到它并在该字段中输入一些数据。我注意到类名有空格并且 ID 是自动生成的(将这些与其他表单进行比较),所以不能使用 ID 进行自动化,因为我想自动创建新表单,并且每次都会使用“描述”字段时间。
下面是描述字段的 html,我试图找到它。
<input size="15" maxlength="255" class="acitem description s-description ui-autocomplete-input" spinner="/assets/spinner-48c6e73f2bbe9ea753f7f8e5410541a8138d19d657ddd532b2765335ed3d62bf.gif" auto_complete="true" data-autocomplete-url="/items/auto_complete" data-autocomplete-renderer="item_autocomplete_renderer" data-autocomplete-delay="250" type="text" name="invoice[invoice_lines_attributes][68345][description]" id="invoice_invoice_lines_attributes_68345_description" autocomplete="off">
我目前使用的代码失败了。
test_1 = driver.find_element_by_css_selector('.acitem.description.s-description.ui-autocomplete-input')
test_1.send_keys("HELLO WORLD")
test_2 = driver.find_element_by_css_selector("input[class='acitem description s-description ui-autocomplete-input']")
test_2.send_keys("HELLO WORLD")
test_3 = Select(driver.find_element_by_xpath("//*[@class='acitem description s-description ui-autocomplete-input']"))
test_3.send_keys("HELLO WORLD")
是我弄错了代码,还是对包含空格的类名有一些解决方法?谢谢。
【问题讨论】:
您的代码使用上面的 html 工作,select
元素除外
【参考方案1】:
试试 xpath
//input[starts-with(@id,'invoice_invoice_lines_attributes_')]
【讨论】:
【参考方案2】:我几乎在所有情况下,都可以通过 XPATH 访问来自 DOM 的所有元素。 在你的情况下,我会选择以下内容:
element = driver.find_element_by_xpath("//input[@id='acitem description s-description ui-autocomplete-input']")
【讨论】:
【参考方案3】:感谢您的所有帮助。我通过使用 start-with 和 contains 解决了。 下面是我的代码。
invc_desc =driver.find_element_by_xpath("//input[starts-with(@class,'acitem') and contains(@class,'s-description')]")
invc_desc.clear()
invc_desc.send_keys("HELLO WORLD")
【讨论】:
以上是关于Selenium / Python - 带有空格的类名无法本地元素的主要内容,如果未能解决你的问题,请参考以下文章
selenium+python unittest实践过程之问题杂集
带有 Selenium 的 Python:从文件系统拖放到 webdriver?
如何使用 Selenium 和 Python 绕过带有 buster 扩展的 ReCaptcha