gpt4 book ai didi

python - 无法通过 Selenium(Python) 按类名找到 div

转载 作者:行者123 更新时间:2023-12-01 07:33:07 28 4
gpt4 key购买 nike

我正在尝试访问 URL http://gridworlds-multiplayer.org/ 中类名为“rps-wrapper”的 div 内的“事件”,但是当我使用该函数时,我出现错误。

    <div class="rps-wrapper">
<ul id="events"></ul>
<div class="controls">
<div class="chat-wrapper">
<form id="chat-form">
<input id="chat" autocomplete="off" title="chat"/>
<button id="say">Say</button>
</form>
</div>
</div>
</div>

<script src="/socket.io/socket.io.js"></script>
<script src="src/client.js"></script>
</body>
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('*the site is here*')
rps_wrapper = driver.find_element_by_class_name('rps-wrapper')

应该获取类名为rps-wrapper的div,但输出错误elenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{“method”:“css选择器”,“选择器":".rps-wrapper"}
( session 信息:chrome=75.0.3770.142)

最佳答案

<div> 中查找事件类名 rps-wrapper 作为所需元素位于 <frame> 中所以你必须:

  • 引发WebDriverWait以使所需的框架可用并切换到它
  • 引发WebDriverWait以使所需的元素可点击
  • 您可以使用以下任一 Locator Strategies :

    • 使用 CSS_SELECTOR :

      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.TAG_NAME,"frame")))
      rps_wrapper = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.rps-wrapper>ul#events")))
    • 使用 XPATH :

      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.TAG_NAME,"frame")))
      rps_wrapper = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='rps-wrapper']/ul[@id='events']")))
  • 注意:您必须添加以下导入:

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

Here you can find a relevant discussion on Ways to deal with #document under iframe

关于python - 无法通过 Selenium(Python) 按类名找到 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57127748/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com