Как сделать стабильный букмарклет для Gmail

Это работало для меня после битвы немного

<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>hamcrest-all</artifactId>
    <version>1.3</version>
    <scope>test</scope>
 </dependency>

 <dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-all</artifactId>
    <version>1.9.5</version>
    <scope>test</scope>
 </dependency>

 <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
 </dependency>
1
задан Rohan Kishibe 28 February 2019 в 03:43
поделиться

1 ответ

Сторонние ресурсы вне вашего локуса контроля, как правило, никогда не считаются стабильными. Вот почему мы пометили версии (например, dev = всегда в движении) и заключили контракты, чтобы попытаться приблизиться к стабильности.

Для чего-то подобного этот HTML обычно более стабилен, чем имена классов, но никогда бы не сказал, что этот плагин стабилен, в то время как вариант использования не поддерживается Google.

Так что, если действительно, то, что указано, верно, что имена классов CSS меняются за сеанс, можно выбрать из DOM на основе структуры HTML или другого атрибута, который не хэшируется.


Просто взглянул на gmail, и действительно gb_Df имя класса - это строка поиска. Похоже, ваша учетная запись была автоматически включена в тест AB одной версии gmail для другой, который сгенерировал различные хеши имен классов.

В этом сценарии выбрал бы placeholder. Так что-то вроде:

document.querySelector('[placeholder="Search mail"]')

Основываясь на опыте (совершенно анекдотично), очень маловероятно, что это значение изменится, и в настоящее время оно есть на странице. Можно проверить другие достаточно стабильные атрибуты, чтобы убедиться, что вы выбрали правильный. Просто имейте в виду, что подобные хакерские плагины нестабильны, могут только постепенно увеличивать стабильность, используя более стабильные селекторы, потому что почва, на которую они полагаются (Gmail DOM), движется со скоростью Google. Удачи:)

0
ответ дан Joshua Robinson 28 February 2019 в 03:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: