有几个问题。
因为您是Selenium的新手,所以Selenium只会与用户可以看到的元素进行交互。因此,如果下拉列表未打开,则无法从下拉列表中获取语言列表,从而暴露出元素。要解决这个问题,只需在按类名拉动元素之前添加点击。
另一个问题是包含语言名称的元素不是DIV
的id =“gt-sl-gms”的子元素。如果你看一下HTML,带有langs的菜单在HTML中全部下降。因此,您需要调整搜索范围,以便不寻找sl_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
装置获得与GT-SL-GMS-菜单的ID(#),其具有与类(。)goog-菜单项内容的后代DIV的元件。希望这是有道理的。 Web选择器上有很多很好的教程。我使用this page作为参考LOT。
编辑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());
}
你为什么期望找到任何'goog-menuitem-content''元素?检查页面时我没有看到任何内容。 – jonrsharpe
@jonrsharpe单击下拉菜单并单击“检查元素”后,除非我误,否则goog-menuitem-content是任何给定语言的类名称。 –