【问题标题】:How to css select this element that needs mean to hover over it如何css选择需要将鼠标悬停在它上面的元素
【发布时间】:2020-10-09 04:13:41
【问题描述】:

我想在此网页上选择 2 个元素: https://www.goodreads.com/book/show/18619684-the-time-traveler-s-wife 但它需要我首先将鼠标悬停在“排序顺序”或“更多过滤器”元素上以打开一个小框,然后我最终可以选择标记为“新”的元素。我如何找到这个选择器?我尝试过使用检查元素,但这个元素似乎比我做过的其他元素更复杂,所以我无法找到合适的元素。

我正在尝试选择此元素,以便 selenium 可以定位此按钮。

Element 1 is Highlighted in Yellow

Element 2 is Highlighted in Yellow

【问题讨论】:

  • 使用inspect元素,一直滚动到底部,你会看到3个类名为“prototip”的div。这就是你要找的。排序在第一个,过滤在第二个。

标签: css selenium


【解决方案1】:

您可以检查元素并复制其 xPath。然后,将 xPath 传递给函数

driver.get_element_by_xpath(<THE_XPATH_HERE>)

如果网页的 xPath 在每次刷新时都发生变化,则需要查找依赖于静态标签或属性的元素。可以在此处找到更多信息。

Click Here

【讨论】:

    【解决方案2】:

    制作一个javascript文件并将其放入其中

    (()=>{
        let links = document.getElementsByClassName('actionLinkLite  loadingLink');
        for(var i =0;i<links.length;i++){
            if(links[i].getAttribute('href') && links[i].getAttribute('href').includes('sort=newest')){
                links[i].click();
            }
        }})();
    

    然后做:

    web_driver.execute_script(open('path/to/file.js').read())
    

    用最旧的替换最新的以按最新排序。

    【讨论】:

      【解决方案3】:

      要点击它们,只需执行以下操作。这是 Python 中的,所以基本上使用 xpath 并点击它。

      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//span[text()='Sort order']/.."))).click()
      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//a[text()='Newest']"))).click()
      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//span[text()='More filters']/.."))).click()
      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//a[text()='5 stars ']"))).click()
      

      在 Javascript 中

      WebElement elem=driver.findElements(By.xpath("//span[text()='Sort order']/.."));
      JavascriptExecutor executor = (JavascriptExecutor) driver;
      executor.executeScript("arguments[0].click();", elem);
      

      导入

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-19
        • 2011-11-08
        • 2020-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-10
        • 1970-01-01
        相关资源
        最近更新 更多