我可以选择第一个class="hm-Login_InputField ">
并输入用户名
<div class="hm-Login ">
<div class="hm-Login_UserNameWrapper ">
<input type="text" class="hm-Login_InputField ">
<div class="hm-Login_InputText ">Join</div>
</div>
<div class="hm-Login_PasswordWrapper ">
<input type="text" class="hm-Login_InputField ">
<input type="password" class="hm-Login_InputField Hidden ">
<button tabindex="0" class="hm-Login_LoginBtn ">GO</button>
<div class="hm-Login_InputText ">Lost Login?</div>
</div>
</div>
elem = driver.find_element_by_class_name("hm-Login_InputField")
elem.click()
elem.send_keys("xxxxx")
我已经为第二个文本输入/密码文本框复制了Xpath。结果不一致,有时会起作用,有时却不会。
/html/body/div[1]/div/div[1]/div/div[1]/div[2]/div/div[2]/input[2]
如何选择第二个class="hm-Login_InputField
?文本输入/密码文本框?
我需要相对的Xpath吗?这是怎么得出的?
我尝试过:
elem = driver.find_element_by_class_name("hm-Login_InputField Hidden ")
elem.click()
elem.send_keys("xxxxx")
NoSuchElementException:否这样的元素:无法找到元素:{“ method”:“ css选择器”,“ selector”:“。hm-Login_InputField隐藏”} (会话信息:chrome = 77.0.3865.120)
答案 0 :(得分:1)
此xpath成功:
Elem = driver.find_element_by_xpath(**"//div[@class='hm-Login_PasswordWrapper ']//input[@type='text']")**
elem.click()
elem.clear()
我现在可以选择该框。
感谢@Shubham Jain
答案 1 :(得分:0)
如果有时可行,则可能是因为元素加载速度较慢。在调用第二个元素之前,请尝试添加time.sleep(2)
,看看它是否有效。
另外,您可以使用driver.find_element_by_class_name("hm-Login_InputField Hidden ")
代替driver.find_elements_by_class_name("hm-Login_InputField")
,这将返回所有类为"hm-Login_InputField"
的元素。然后elem[0]
将是您的第一个输入elem[1]
,第二个将继续运行。
答案 2 :(得分:0)
检查是否有任何帧(如果存在),则需要先切换到帧。
还先添加诸如visibilityOfElementLocated
或presenceOfElementLocated
之类的显式等待
也可以在xpath下尝试:
//input[@type='password']
OR
//div[@class='hm-Login ']//div[@class='hm-Login_PasswordWrapper ']//input[@type='password']