Как заставить селен распознавать поиск с апострофом - PullRequest
0 голосов
/ 24 сентября 2019

Я создал скрипт, который загружает оценки учеников и комментарии из моего листа Google в D2L.Чтобы получить селен для ввода iframe, в котором есть текстовое поле для комментариев, я ищу имя и фамилию.Это работало для меня весь прошлый год.В этом году у меня есть имена, которые включают «как часть фамилии, например, Джеймс д'Арси.Селену это не нравится.

Есть ли простой способ сделать апостроф распознанным?или, может быть, не нужно точное совпадение для моего поиска?

 for i in toplist:  # copies and pastes in comments 
        icnFeedback = "//a[contains(@title,'"+ i[0]+"') and @class='d2l-imagelink']" #i[0] is students name, looking that it is contained in title. 
        comments = i[1]  # i[1] is student comment

        wait.until(EC.element_to_be_clickable((By.XPATH, icnFeedback)))
        myElement = driver.find_element_by_xpath(icnFeedback)   # find user by names
        driver.execute_script("arguments[0].click();", myElement)   #clicks the feedback button

1 Ответ

1 голос
/ 24 сентября 2019

Похоже, что это может произойти, потому что вы используете одинарные кавычки, чтобы оба содержали вашу строку (i[0]), а внутри самой строки есть одиночная кавычка.Когда это происходит, запрос теряет свою структуру.

fake_ln = "las'tname"
xpath = "//a[contains(@title,'"+ fake_ln +"') and @class='d2l-imagelink']"
print(xpath)
# outputs: //a[contains(@title,'las'tname') and @class='d2l-imagelink']

Это проблема, потому что теперь вместо кавычек указывается только фамилия, в которую вы также ставите ) and @class=.

Попробуйте это:

icnFeedback = '//a[contains(@title,"'+ i[0]+'") and @class="d2l-imagelink"]'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...