我正在尝试首次使用Selenium以自动方式登录网站。我可以使用以下代码轻松找到电子邮件(用作用户名)元素:
但是,对于密码,没有id或name标记,因此我很难找到该元素。这是页面的源代码。密码元素在下面以灰色突出显示:
我尝试使用以下语句通过link_text和class_name定位password元素,但均失败了:
我想象通过XPath定位可能是这里的方法,但是我不确定语法(尤其是因为有很多div标签)。感谢您的协助。
答案 0 :(得分:2)
request.password
是ng-model
属性,不是文本。
find_element_by_class_name
收到一堂课,您尝试了三堂课。
使用css_selector
查找元素:
通过request.password
driver.find_element_by_css_selector('[ng-model="request.password"]')
按班级
driver.find_element_by_css_selector('.form-control.ng-pristine.ng-valid')
答案 1 :(得分:0)
一种假设页面上没有其他密码元素的方法是找到所有输入标签,然后将其过滤为密码字段。
def getPassword(driver):
inputs = driver.find_elements_by_tag_name('input')
for input in inputs:
if input.get_attribute('type')=='password':
return input
return None
答案 2 :(得分:0)
最好的方法是
driver.findElement(By.xpath("//input[@type='password'][@title='Password']"))
尝试使用较少的类选择器,并使用id或标签。类可以与另一个元素相关联。抱歉,这是Java语言。如果需要,可以在python中找到它。