我正在写一个硒程序,以擦除登录后的网站。但是,除了占位符文本之外的所有内容都是动态的,包括css选择器,xpath等。是否可以通过不带有Xpath的可见文本进行选择?
html代码段:
<form class="un-form un-login-form "><div class="un-login-form__change-school form-group">Name<br><small>D-26871, Russellstr. 33</small><br><a>Schule wechseln</a></div><div class="form-group"><input type="text" value="" placeholder="Benutzer" id="732de780-8f7b-41f6-98ba-c73503c93fcc" class="form-control"></div><div class="form-group"><input type="password" value="" placeholder="Passwort" id="5d7bc08a-7301-4348-82f1-a16e9e657720" class="form-control"></div><div class="un-login-buttons un-login-form__buttons btn-group"><button type="submit" title="Login" class="btn btn-primary">Login</button></div><div class="un-login-form__links"><a>Passwort vergessen?</a><br></div></form>
我的代码:
paswd = driver.find_element_by_xpath("//input[@placeholder='Passwort']")
因此,由于xpath的变化,我总是会得到未发现的错误,也归因于所有这些类的名称都相同,所以它无法集中该元素
答案 0 :(得分:0)
由于id
是动态的,因此您可以使用其他属性,也可以使用以下任一Locator Strategies:
使用css_selector
:
driver.find_element_by_css_selector("input.form-control[placeholder='Passwort']").send_keys("3agle")
使用xpath
:
driver.find_element_by_xpath("//input[@class='form-control' and @placeholder='Passwort']").send_keys("3agle")
答案 1 :(得分:0)
请尝试driver.findElement(By.tagName(“”)
答案 2 :(得分:0)
好了,现在这种XPATH为我做了:// * [@@ placeholder ='Benutzer']