1

我是 selenium 的新手,我正在尝试编写一个代码,该代码将弹出一个项目以在二手网站上出售。一切正常,直到我试图找到弹出按钮。

这是网站中的html代码:

快照

这是我的代码中的一行:

pop_up = driver.find_element_by_xpath(("//*[@id='bounceRatingOrderBtn']")).click()

我试图找到一个解决方案几个小时,但对我来说没有任何结果。

4

3 回答 3

0

我认为作为Partha siad 与框架相关的问题,我只是添加了框架之间切换的 python 版本:

driver.switch_to.frame('在这里找到你的其他框架元素') driver.switch_to.default_content()

于 2020-08-02T19:27:24.273 回答
0

弹出按钮是否出现在不同的框架或新窗口中?检查并根据需要切换到框架或新窗口,然后对按钮执行操作。

我对python selenium不熟悉,我可以给出框架和窗口切换的java selenium代码,请理解逻辑/代码并自行查找python版本的代码。

框架开关的 Java 版本代码 -

driver.switchTo().frame("yournewframename");

Window 开关的 Java 版本代码 -

        for(String handle:driver.getWindowHandles()) 
        {
            String windowtitle = driver.switchTo().window(handle).getTitle();
            if(windowtitle.contains("your new pagetitle"))
            {
                System.out.println("Title after switching "+driver.getTitle());
                break;  
            }
        }
于 2020-08-02T17:43:08.570 回答
0

所需的元素是AJAX元素,因此要单击该元素,您必须诱导WebDriverWait并且element_to_be_clickable()您可以使用以下任一Locator Strategies

  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span#bounceRatingOrderBtn[name='bounceRatingOrderBtn']"))).click()
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@id='bounceRatingOrderBtn' and @name='bounceRatingOrderBtn']"))).click()
    
  • 注意:您必须添加以下导入:

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

参考

您可以在以下位置找到一些关于NoSuchElementException的相关讨论:

于 2020-08-02T22:42:39.993 回答