当css路径太长时,使用find_element_by_css_selector定位元素

时间:2015-02-24 15:34:54

标签: python selenium selenium-webdriver webdriver

我正在尝试找到元素1.密码2.提交按钮

来自firebug的CSS路径:

密码

...textfield-1023.x-field.loginpage-email-textfield.x-form-item.x-form-item-default.x-form-type-text.x-box-item.x-field-default.x-vbox-form-item...

按钮

...
button-1028.x-btn.loginpage-login-button.x-unselectable.x-box-item.x-toolbar-item.x-btn-default-small span#button-1028-btnWrap.x-btn-wrap.x-btn-wrap-default-small 
...

代码:

e_passwd = driver.find_element_by_css_selector(".loginpage-password-textfield")
action_passwd = ActionChains(driver)
action_passwd.move_to_element(e_passwd)
action_passwd.click(e_passwd)
action_passwd.send_keys("symbol")
action_passwd.perform()

e_submit = driver.find_element_by_css_selector(".loginpage-login-button")
action_button = ActionChains(driver)
action_button.move_to_element(e_submit)
action_button.click(e_submit)
action_button.perform()

此代码能够找到并单击“提交”按钮,但无法找到密码字段。

我需要使用其他方法来查找textfield元素吗?

1 个答案:

答案 0 :(得分:1)

Firebug是一个很棒的工具。但是并不总是能满足你的需求。因此,有时知道如何手动编写选择器会很有帮助。见thread 简单地使用。 Css允许您使用[]添加多个属性,以便唯一地标识元素

[placeholder='Password'][type='password']

如果您想将xpathfind_element_by_xpath一起使用,还可以使用以下选项:

//input[@placeholder='Password'][@type='password']

//input[@placeholder='Password' and @type='password']

as @alecxe建议

Api doc是here