问题:
无法从css选择器中选择特定元素。需要验证注册用户是否可以成功更改密码。我已经尝试了类的不同属性来调用它。尝试使用前两个示例时,结果是方法中出现异常错误。最后一次尝试调用第一个类实例并重置密码字段(失败)。
尝试:
driver.find_element_by_css_selector("value.Update").click()
driver.find_element_by_css_selector("type.submit").click()
driver.find_element_by_css_selector("input.test_button4").click()
目标:
我需要选择共享同一课程的项目。如下所示,该课程是共享的。
form id="changepw_form" name="changepw" action="#" method="post">
<div class="field3">
<div class="field3">
<div class="field3">
<input class="test_button4" type="reset" value="Reset" style"font-size:21px"="">
<input class="test_button4" type="submit" value="Update" style"font-size:21px"="">
答案 0 :(得分:16)
driver.find_element_by_css_selector(".test_button4[value='Update']").click()
编辑:
因为选择器需要class
,id
或tagname
,但value.Update
本身并不是这些。
.test_button4
提供了要匹配的类名,[value='Update']
从那里指定要选择的特定匹配项。
答案 1 :(得分:2)
test_button4 = driver.find_elements_by_class_name('test_button4') # notice its "find_elementS" with an S
submit_element = [x for x in test_button4 if x.get_attribute('value') == 'Update'] #this would work if you had unlimited things with class_name == 'test_button4', as long as only ONE of them is value="Update"
if len(submit_element): # using a non-empty list as truthiness
print ("yay! found updated!")
这是我几乎没有看到任何人记录,解释或使用的东西。
(恶意使用名称,例如因为它最简单)
find_element_by_name()
会返回单个项目,如果找不到则会发出异常
find_elements_by_name()
返回元素列表。如果没有找到元素,则列表为空
所以,如果你做一个find_elements_by_class_name()
并且它返回一个包含X条目的列表,那么剩下的就是缩小你想要的东西就是一些老式的列表理解(就像我在我的用法中所使用的那样)如果你出于某种原因知道你想要哪个元素,那么请回答一些索引。
get_attribute()
也被严重利用不足。它使用=
之前的内容解析元素html的内部,并返回=
之后的内容