【问题标题】:How to locate the input tag as per the HTML provided through Selenium?如何根据 Selenium 提供的 HTML 定位输入标签?
【发布时间】:2018-09-07 01:52:50
【问题描述】:

请问我在下面使用什么定位器。我已经尝试过 Xpath 和 CSS Selector 但没有运气。

<input type="password" 
       class="input-block-level ng-dirty ng-valid ng-valid-required" 
       placeholder="Password" ng-model="password" ng-trim="false"
       required="" ng-disabled="isLogging" 
       ng-hide="changePassword" autocomplete="off">

【问题讨论】:

  • 您使用的是哪种 Selenium 语言绑定艺术Java / Python / C# / NodeJS ?
  • 欢迎来到 Stack Overflow!请参阅:How do I do X? SO 的期望是,提出问题的用户不仅会进行研究以回答他们自己的问题,还会分享该研究、代码尝试和结果。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见:How to Ask

标签: selenium selenium-webdriver xpath css-selectors webdriver


【解决方案1】:

根据 HTML,您可以使用以下任一解决方案:

  • CSS_SELECTOR:

    "input.input-block-level.ng-dirty.ng-valid.ng-valid-required[ng-model='password']"  
    
  • XPATH:

    "//input[@class='input-block-level ng-dirty ng-valid ng-valid-required' and @ng-model='password']"
    

注意:该元素是Angular 元素,请确保您与该元素进行交互诱导WebDriverwait

【讨论】:

  • 我尝试了你提供的两个定位器,但仍然没有工作,请参阅下面的错误:线程“main”org.openqa.selenium.NoSuchElementException中的异常:没有这样的元素:无法找到元素:{ "method":"xpath","selector":"input.input-block-level.ng-dirty.ng-valid.ng-valid-required[ng-model='text']"} (会话信息:chrome =68.0.3440.106)
  • @Catia 确保你在正确的 SearchContext 中寻找元素
  • @Catia 根据您共享的 html,属性是 ng-model="password",因此我的答案包含 @ng-model='password',但您的错误跟踪日志包含 [ng-model='text']。请再核对一下好吗?
  • [ng-model='text'] 这属于用户名字段,ng-model="password" 属于密码之一。
  • 好的,现在可以使用 WebdriverWait。太棒了,谢谢
【解决方案2】:

对于样式类ng-dirty ng-valid ng-valid-required,在角完成编译源代码后,角编译器会自动插入。所以你的定位器不应该依赖这些样式类。

1) Using Java as script language

   driver.findElement(By.cssSelector("input[placeholder='Password']"))
   // or
   driver.findElement(By.xpath("//input[@placeholder='Password']"))

2) Using python as script language

   dirver.find_element_by_css_selector("input[placeholder='Password']")
   // or
   driver.find_element_by_xpath("//input[@placeholder='Password']")

【讨论】:

  • 请看下面的错误:线程“main”中的异常org.openqa.selenium.NoSuchElementException:没有这样的元素:无法找到元素:{“method”:“css selector”,“selector” :"input[placeholder='Password']"}(会话信息:chrome=68.0.3440.106)
猜你喜欢
  • 1970-01-01
  • 2019-02-11
  • 1970-01-01
  • 2018-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-15
相关资源
最近更新 更多