硒找到具有动态路径的动态元素

时间:2019-06-26 13:53:51

标签: python python-3.x selenium-webdriver xpath css-selectors

我正在写一个硒程序,以擦除登录后的网站。但是,除了占位符文本之外的所有内容都是动态的,包括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的变化,我总是会得到未发现的错误,也归因于所有这些类的名称都相同,所以它无法集中该元素

3 个答案:

答案 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']