使用Selenium Python查找下一个标签

时间:2014-09-11 05:28:47

标签: python selenium xpath

所以基本上我将selenium用于以下网页:http://www.registrar.ucla.edu/schedule/catalog.aspx?sa=APPLING&funsel=3。我创建了一个驱动程序,我正在寻找符合某些特定条件的粗体文本。下面是我的代码的一部分,它搜索粗体文本并找到匹配的:

# Finds all bold matches which contain the class title 
    bold_matches = driver.find_elements_by_class_name('bold')
    class_title = ''
    class_description = ''
    for bold_match in bold_matches:
        # If the class title matches, we set our class title
        if bold_match.text[:bold_match.text.find('.')] == class_number:
            class_title = bold_match.text

除了我们找到一个具有匹配文本的元素之外,我们不需要太担心代码,我们将文本设置为类标题。

使用Selenium需要帮助的是获取匹配文本的下一个标记。所以我需要在匹配bold_match之后立即使用标记。下一个标记包含可设置class_description文本的文本。

我查看了类似的问题,但它们都引用了与xpath匹配的ID。此网页的问题在于粗体文本标记及其后面的标记不包含任何ID。

1 个答案:

答案 0 :(得分:0)

我找到了一种做我需要的hackish方式。以下是我的代码:

# Finds all bold matches which contain the class title 
bold_matches = driver.find_elements_by_class_name('bold')
class_title = ''
class_description = ''
for bold_match in bold_matches:
    # If the class title matches, we set our class title
    if bold_match.text[:bold_match.text.find('.')] == class_number:
        class_title = bold_match.text

        # We find the class description from the class title
        all_elements = driver.find_elements_by_xpath('//*')
        matching_index = all_elements.index(bold_match) + 2
        class_description = all_elements[matching_index].text

我发现我可以在a ll_elements列表中找到我当前匹配的元素的索引,然后找到下一个相应的索引来获取class_description