【问题标题】:How to locate element by class name and specific attribute name at the same time如何同时通过类名和特定属性名定位元素
【发布时间】:2020-04-26 10:42:43
【问题描述】:

我正在使用 selenim python,并希望找到以下元素:

<div id="coption5" class="copt" style="display: block;">

我需要类名 'copt' 和样式值 "display: block;",有什么方法可以同时使用类名和同时属性值?

谢谢!

【问题讨论】:

  • 你有哪些失败的尝试?向我们展示您的代码
  • 阅读文档,并尝试先弄清楚。
  • 使用css:.copt[style="display: block;"]

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


【解决方案1】:

如果考虑到 style 值 display: block; 是强制性的,您可以为 visibility_of_element_located() 引入 WebDriverWait 并且您可以使用关注Locator Strategies:

  • 使用CSS_SELECTOR:

    element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.copt[id^='coption']")))
    
  • 使用XPATH:

    element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='copt' and starts-with(@id, 'coption')]")))
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

【讨论】:

  • 我可以这样编码吗: element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='copt' and @style=' "显示:块;"']")))
  • @William style='"display: block;" 将由 visibility_of_element_located 负责。查看更新的答案并让我知道状态。
  • 您好,先生,您能帮我解决这个问题吗stackoverflow.com/questions/59654630/…
  • 您好,先生,当使用 element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='copt' 并以(@ id, 'coption')]"))) 我收到一条消息:raise TimeoutException(message, screen, stacktrace)
猜你喜欢
  • 2019-07-05
  • 2022-10-07
  • 1970-01-01
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 1970-01-01
  • 2013-11-05
  • 1970-01-01
相关资源
最近更新 更多