Selenium InvalidSelectorException, вызванный одинарной кавычкой (python) - PullRequest
0 голосов
/ 15 ноября 2018

У меня проблемы с выбором элемента с помощью селена webdriver.Я пытаюсь получить «Книгу ученика» и затем нажать кнопку «Пуск», которая принадлежит ей.Существует несколько книг с похожим названием, и важно получить именно эту книгу.использование идентификаторов для поиска элемента не работает, потому что они генерируются и не всегда выглядят одинаково.

HTML выглядит следующим образом:

<table style="margin: 0; width: 100%;">
    <tbody>
        <tr>
            <td><img src="/image/db/prod/pic.jpg" alt=""></td>
            <td style="padding: 0; vertical-align: top; position: relative;">
                <h3 class="top0" style="width: 200px;" id="crp_title_254">Student's Book</h3>
                <hr><a class="linkButton orangeLinkButton bold" href="some_link">Start</a>
                <a class="btn_crpdel" id="btn_crpdel_254"><img class="style-del" src="/styles/pic/style-del.png" alt="-" style="width: 23px; height: 23px;"></a>
            </td>
        </tr>
    </tbody>
</table>

часть Python выглядит так с переменной материала, содержащей значение «Книга студента»:

try:
    #material = "Student's Book"
    start_link = self.browser.find_element(By.XPATH, "//h3[text()='" + material + "']/following::a[contains(text(), launch_button[self.INTERFACE_LANGUAGE])]")
    start_link.click()
except Exception as e:
    Exceptionhandling...

при выполнении приведенного выше кода следующее исключениепроисходит:

InvalidSelectorException('Given xpath expression "//h3[text()=\'Student Book\'s\']/following::a[contains(text(), launch_button[self.INTERFACE_LANGUAGE])]" is invalid: SyntaxError: The expression is not a legal expression.', None, None)

Все работает отлично, если в нем нет ни одной кавычки.Кто-нибудь знает, что я делаю не так?

спасибо заранее!

...