Python Selenium webcrawling组合框
我试图在python中单击java脚本组合框,但是如果我正常操作,它会给我一个错误,告诉我组合框是隐藏的,我会按编程方式等待组合框出现,但它不会出现。组合框中的这个选项是一个子菜单,但是,如果我只从real menu中选择一个选项,它会工作,但不会与子菜单选项一起工作。这是一个网站,>高级搜索>然后是组合框,我正在寻找Premium Mega的子菜单选项>Premium Mega:Fannie Mae/Ginnie Mae支持的可调利率。谢谢 Selenium将无法单击,因为要选择的元素被认为是不可见的活动元素。因此,使用js解决此问题的唯一方法。 在java中对我起作用的是:Python Selenium webcrawling组合框,python,selenium,combobox,Python,Selenium,Combobox,我试图在python中单击java脚本组合框,但是如果我正常操作,它会给我一个错误,告诉我组合框是隐藏的,我会按编程方式等待组合框出现,但它不会出现。组合框中的这个选项是一个子菜单,但是,如果我只从real menu中选择一个选项,它会工作,但不会与子菜单选项一起工作。这是一个网站,>高级搜索>然后是组合框,我正在寻找Premium Mega的子菜单选项>Premium Mega:Fannie Mae/Ginnie Mae支持的可调利率。谢谢 Selenium将无法单击,因为要选择的元素被认为是
@Test
public void neeededDropdownSelect() throws InterruptedException {
driver.get("https://mbsdisclosure.fanniemae.com/PoolTalk2/index.html");
jsClickOnElement("li#tab_1>a>span");
WebElement dropdownMenu = fluentWait(By.cssSelector("span#asSelectedSecType"));
dropdownMenu.click();
jsClickOnElement("div[class=\"fg-menu-container ui-widget ui-widget-content ui-corner-all fg-menu-flyout\"] ul[class=\"fg-menu ui-corner-all\"]>li>a[id=\"MEGA_INTERIM\"]");
jsClickOnElement("div[class=\"fg-menu-container ui-widget ui-widget-content ui-corner-all fg-menu-flyout\"] ul[class=\"fg-menu ui-corner-all\"]>li>ul.ui-corner-all a[id=\"MEGA_INTERIM_ARM\"]");
}
public WebElement fluentWait(final By locator){
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(30, TimeUnit.SECONDS)
.pollingEvery(5, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class);
WebElement foo = wait.until(
new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(locator);
}
}
);
return foo; } ;
public void jsClickOnElement(String cssSel){
JavascriptExecutor js = (JavascriptExecutor) driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("var x = $(\'"+cssSel+"\');");
stringBuilder.append("x.click();");
js.executeScript(stringBuilder.toString());
}
希望这对您有所帮助无论如何,我可以在python中使用它吗?我用java向您展示了这段代码,因此我想您可以简单地将它应用到python中,因为css选择器div[class=\fg menu container ui widget ui widget ui widget content ui corner all fg menu corner all\]>li>a[id=\MEGA\u middial\];jsClickOnElementdiv[class=\fg菜单容器ui小部件ui小部件内容ui角点所有fg菜单弹出按钮\]ul[class=\fg菜单ui角点所有\]>li>ul.ui-corner-all a[id=\MEGA_-middle_-ARM\];是正确的,这段代码对我有效我检查了它=我得到了这个错误selenium.common.exceptions.ElementNotVisibleException:Message:u'元素当前不可见,因此可能无法与'when i do div[class=\fg menu container ui widget ui widget ui widget content ui corner all fg menu flyout\]ul[class=\fg menu ui corner all\]>li>ul.ui-corner-all a[id=\MEGA\u middial\u ARM\]尝试然后将js集成到您的python代码中查看此链接:然后您将能够使用我的js代码,它总是单击不可见的元素。在python中有一个与js JSClickOneElement等效的元素,我尝试使用鼠标覆盖,但无法设置鼠标覆盖的持续时间。