我是 selenium 的新手,我正在尝试编写一个代码,该代码将弹出一个项目以在二手网站上出售。一切正常,直到我试图找到弹出按钮。
这是网站中的html代码:
这是我的代码中的一行:
pop_up = driver.find_element_by_xpath(("//*[@id='bounceRatingOrderBtn']")).click()
我试图找到一个解决方案几个小时,但对我来说没有任何结果。
我是 selenium 的新手,我正在尝试编写一个代码,该代码将弹出一个项目以在二手网站上出售。一切正常,直到我试图找到弹出按钮。
这是网站中的html代码:
这是我的代码中的一行:
pop_up = driver.find_element_by_xpath(("//*[@id='bounceRatingOrderBtn']")).click()
我试图找到一个解决方案几个小时,但对我来说没有任何结果。
我认为作为Partha siad 与框架相关的问题,我只是添加了框架之间切换的 python 版本:
driver.switch_to.frame('在这里找到你的其他框架元素') driver.switch_to.default_content()
弹出按钮是否出现在不同的框架或新窗口中?检查并根据需要切换到框架或新窗口,然后对按钮执行操作。
我对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;
}
}
所需的元素是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的相关讨论: