繁体   English   中英

使用Selenium / Python 2.7无法按类名称查找元素

[英]Unable to find elements by class name using Selenium/Python 2.7

我正在尝试从Google翻译“检测语言”下拉列表中选择所有可用的语言,以便我可以自动进行一些翻译。

我没有任何语法错误,但是“ find_elements_by_class_name”方法(我以为会获得所有语言)变成空的。

from selenium import webdriver
fire = webdriver.Firefox()
fire.get("http://translate.google.com")
sl_dropdown = fire.find_element_by_id("gt-sl-gms")  # dropdown menu
# returns empty list
sl_dropdown.find_elements_by_class_name("goog-menuitem-content")

我只是从Selenium开始,所以我确定我缺少一些东西。 谢谢你的帮助。

有几个问题。

既然您是Selenium的新手,那么一件事……Selenium仅与用户可见的元素进行交互。 因此,如果下拉列表未打开以暴露元素,则无法从下拉列表中获取语言列表。 要解决此问题,只需单击一下,然后再按类名提取元素即可。

另一个问题是,包含语言名称的元素不是ID =“ gt-sl-gms”的DIV子级。 如果您查看HTML,则带有langs的菜单在HTML中都位于下方。 因此,您需要调整搜索范围,以不仅仅寻找sl_dropdownsl_dropdown

我不了解python,但希望这是正确的,并且/或者可以为您设定正确的方向。

from selenium import webdriver
fire = webdriver.Firefox()
fire.get("http://translate.google.com")
sl_dropdown = fire.find_element_by_id("gt-sl-gms")  # dropdown menu
sl_dropdown.click() # opens the languages menu so its accessible to Selenium
langs = fire.find_elements_by_css_selector("#gt-sl-gms-menu div.goog-menuitem-content")
for lang in langs:
    print lang.text  # dumps the text in each WebElement

顺便说一句,CSS选择器#gt-sl-gms-menu div.goog-menuitem-content表示获取一个ID为(#)gt-sl- #gt-sl-gms-menu div.goog-menuitem-content的元素,该元素的后代DIV为(。)goog类-menuitem-内容。 希望这是有道理的。 网络上有很多关于CSS选择器的好教程。 将此页面用作很多参考。


编辑1:这是我在Java中用于转储语言的代码。

driver.get("http://translate.google.com");
driver.findElement(By.id("gt-sl-gms")).click();
List<WebElement> langs = driver.findElements(By.cssSelector("#gt-sl-gms-menu div.goog-menuitem-content"));
for (WebElement lang : langs)
{
    System.out.println(lang.getText());
}

它可以在我的机器上工作。 如果之后调用click() ,则将打开语言的下拉列表:

from selenium import webdriver
fire = webdriver.Firefox()
fire.get("http://translate.google.com")
sl_dropdown = fire.find_element_by_id("gt-sl-gms")  # dropdown menu
sl_dropdown.click()

我使用Python 2.7.6,Selenium 2.47.1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM