python - 如何从列表中选择 Selenium 中的项目?

标签 python selenium xpath css-selectors webdriverwait

有一个列表项(li),您需要单击它。但对于这种情况是否会持续下去 - 尚不清楚。

我和 id 已尝试过,而对于 xpath 和链接中的文本 - 则不行。

<li id="l_pr" class=""><a href="https://vk.com/32444224224" onclick="return nav.go(this, event, {noback: true, params: {_ref: 'left_nav'}});" class="left_row">
    <span class="left_fixer">
      <span class="left_count_wrap fl_r left_void"><span class="inl_bl left_count_sign">0</span></span>
      <span class="left_icon fl_l"></span>
      <span class="left_label inl_bl">My page</span>
    </span>
  </a>
  <div class="left_settings" onclick="menuSettings(0)">
  <div class="left_settings_inner"></div>
</div>
</li>

我希望点击“我的页面”链接

最佳答案

click()文本为我的页面的链接,因为元素是 JavaScript启用的元素,因此您必须为 element_to_be_clickable() 引发 WebDriverWait,并且您可以使用以下解决方案之一:

  • 使用XPATH答:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[text()='My page']"))).click()
    
  • 使用CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "li[id$='_pr']>a[href^='http'] span.left_label"))).click()
    
  • 使用XPATH B:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//li[contains(@id,'_pr')]/a[starts-with(@href,'http')]//span[text()='My page']"))).click()
    
  • 注意:您必须添加以下导入:

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

关于python - 如何从列表中选择 Selenium 中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57467377/

相关文章:

python - powershell tts 命令旁白使用 python 更改

python - Django MySql 设置

selenium - 如何通过Selenium打开Chrome浏览器控制台?

java - 如何返回到 XPath 中的直接父级并获取文本?

css - 使用 xpath 或 css : How to get something which is selected on page

python - 将 MYSQL 表转储到 CSV 的最佳方法是什么?

Javascript:修改代码以将元素添加到数组/列表

javascript - 在java中执行javascript代码时发生错误

xml - xPath 帮助 - 选择字符串中的特定单词

Python将url转换为目录