如何获得下拉列表中所有选项的全部计数?

时间:2018-06-27 07:30:49

标签: selenium selenium-webdriver drop-down-menu

我正在尝试计算https://smallpdf.com/word-to-pdf上“所有工具”下拉菜单中显示的所有选项

因此,总数应为18,但对于下拉菜单中显示的选项,代码计算为12

运行代码时,您能否检查此站点并为我提供正确的代码,以计算“所有菜单”下拉菜单中子菜单项的正确计数。

这是我的代码和屏幕截图: { driver.get(“ https://smallpdf.com/word-to-pdf”);

driver.manage()。window()。maximize();

dfs = []
for page in range(1, 3):
    page = (page - 1) * 10
    url = "%s%s%d" % (main_url, start_from, page)  # get full url
    indeed = requests.get(url)
    indeed.raise_for_status()
    soup = BeautifulSoup(indeed.text, 'html.parser')

...

    data_record = []
    for title, company, city, summary, link in zip(jobsTitle, companiesName, citiesName, jobsSummary, jobsLink):
        data_record.append({'Job Title': title, 'Company': company, 'City': city, 'Summary': summary, 'Job Link': link})

    df = pd.DataFrame(data_record, columns=['Job Title', 'Company', 'City', 'Summary', 'Job Link'])
    dfs.append(df)

df_fin = pd.concat(dfs, ignore_index=True)

example

3 个答案:

答案 0 :(得分:0)

使用此xPath

//div[@class='smpdf_379Xjwyb9lWVFS smpdf_2-apaRtNmCROQL']//li/ul/li

完整代码:

driver.manage().window().maximize();

driver.findElement(By.xpath("//div[@class='smpdf_BsrfvsQ6t09wiN']")).click();
Thread.sleep(2000);
int count = driver.findElements(By.xpath("//div[@class='smpdf_379Xjwyb9lWVFS smpdf_2-apaRtNmCROQL']//li/ul/li")).size();

System.out.println(count);

输出:

18

编辑:

您已要求向您展示如何找到xPath。这是一个屏幕截图,显示:

img

答案 1 :(得分:0)

您的xpath没有指向正确的选项列表。

您可以先找到期望div的div,然后使用上述div元素找到期望的列表选项

编辑: 工作代码:

    driver.get("https://smallpdf.com/word-to-pdf");
    driver.manage().window().maximize();
    driver.findElement(By.xpath("//div[@class='smpdf_BsrfvsQ6t09wiN']")).click();
    WebElement container=driver.findElement(By.xpath("//div[@class='smpdf_379Xjwyb9lWVFS smpdf_2-apaRtNmCROQL']"));
    int count=container.findElements(By.xpath(".//li/ul/li")).size();
    System.out.println("Count :"+count);

答案 2 :(得分:0)

尝试使用此xpath和代码

read