selenium+python自动化之元素定位

不要点击:https://item.taobao.com/item.htm?id=613711271112

作者:一飞冲天

  

  同样的道理,把一个页面上的元素当成是一个对象(你的女神),我们就可以通过她的属性值来找到她,比如她性别女爱好爬山---------你就可以在爬山这里找到她。

  元素定位在这四个环节中是至关重要的,如果说按学习精力分配的话,元素定位占70%;操作元素10%,获取返回结果10%;断言10%。如果一个页面上的元素不能被定位到,那后面的操作就无法继续了。接下来就来讲webdriver提供的八种基本元素定位方法。

一、环境准备:

1.浏览器选择:Firefox

2.安装插件:Firebug和FirePath(设置》附加组件》搜索:输入插件名称》下载安装后重启浏览器)

3.安装完成后,页面右上角有个小爬虫图标

4.快速查看xpath插件:XPath Checker这个可下载,也可以不用下载

5.插件安装完成后,点开附加组件》扩展,如下图所示

二、查看页面元素:

以百度搜索框为例,先打开百度网页

1.点右上角爬虫按钮

2.点左下角箭头

3.讲箭头移动到百度搜索输入框上,输入框高亮状态

4.下方红色区域就是单位到输入框的属性:

<input id="kw" class="s_ipt" type="text" autocomplete="off" maxlength="100" name="wd">

三、元素定位id:find_element_by_id()

1.从上面定位到的元素属性中,可以看到有个id属性:id="search-key",这里可以通过它的id属性单位到这个元素。

2.定位到搜索框后,用send_keys()方法

四、元素定位name:find_element_by_name()

1.从上面定位到的元素属性中,可以看到有个name属性:name="wd",这里可以通过它的name属性单位到这个元素。

说明:这里运行后会报错,说明这个搜索框的name属性不是唯一的,无法通过name属性直接定位到输入框

五、元素定位class:find_element_by_class_name()

1.从上面定位到的元素属性中,可以看到有个class属性:class="s_ipt",这里可以通过它的class属性单位到这个元素。

六、元素定位tag:find_element_by_tag_name()

1.从上面定位到的元素属性中,可以看到每个元素都有tag(标签)属性,如搜索框的标签属性,就是最前面的input

2.很明显,在一个页面中,相同的标签有很多,所以一般不用标签来定位。以下例子,仅供参考和理解,运行肯定报错

七、元素定位link:find_element_by_link_name()

1.定位百度页面上"hao123"这个按钮

查看页面元素:

<a class="mnav" target="_blank" href="http://www.hao123.com">hao123</a>

2.从元素属性可以分析出,有个href = "http://www.hao123.com

说明它是个超链接,对于这种元素,可以用以下方法

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhUAAACwCAIAAAA3yAtdAAAgAElEQVR4nOzd538bR4In/LvZneDxKFuWrSzbsrIlWRIlJnSFzhlo5JxzBggw5yxKVLZlOVvOHntsz4wn7ezOzuzt3e09755Xz1/zvABJkRIp2RzRlm7q+8HnIwhoNLoLYP26qrpR/w09JBBCQBAEQfzD+G8kPwiCIIhVIPlBEARBrAbJD4IgCGI1SH4QBEEQq0HygyAIglgNkh8EQRDEajz2+cFBKJLkIgiC+N6tbX5ghB2NOxCpENIPddMxRF5OnlHkMrfw1sjN8kmWlh7qG31XHKIzgjwgy90ib1t5MYzouCANyHKvKIRp9HALhyAIYq2tZX5AaPDyCKQAADLDJmlaBtRD3HQG4ZJm/7PDPn0nP9jzhutrsxJAD/F9Voa5LIbc0scQhCVZ/9Rq+9hm+73TdYVZ/qU0oouy/rHV9onV+qnV+p4mx2nSA0gQxONkrfIDAmimmZKqTzO0m2GSoljjedvDriBZmhvTjEX5gYK8VOIY5e9Yp4RpA3+r1oBZsHwo0vrSBwXEXDGs3TREALo5qbDCigxOfMVsHmIRBoDH7HlNmxAZbvllCYIgHkVrlR80ortV/ZdO5y8tljcslg9ttg8t5iqDV24YQA0zcZ7PCkJwcWcOpNM8n+X5MEPz848hiJwMl+X5tCjNzueHiOgIx2d5zoEhnlsM+1kuTGMzZhI8n+UYbX4jEUQ+ls8KfIbnggwXZ2kFNjab6dFt72qSHVKNxVwsF2IwD+fuxxgsQMAi7GOFa3bP3yxKp8CHGMwBAAB0c3xNUn/pdJwX+RTHGivnpZWTXjFbpjgsAIAg3S0rQwLDr7g4QRDEI2cN2x8Ohh3WtALDhDmuW5a7BN66cn2q0fy0Zr5tWN602G6bJT+CCACAmE7V+K1hedNivGXW6yymAQAQenn5TYvxvsX8umF8brVNcxAAaGOE87rla6d1WmJlAAAADObGzI4/Wc3XVe01s+ULu3WcpxkAAIBBQb5lMd6yWN4yrL+yWW/JohcBAABGdF01bsiCBVAAABqzfZr1PU0KYEBjpke3fa1LQQwUmu1XzX/0Bv4/l+0DwzwhczoAAOC6br5ttf8vn/crw3JTV9MIIoiCvDSoKAu3fllKMrSMmbpi+dJivqTKQ4oyKolhjL6fXjeCIIiHYg3HPxgIyyIvUhQNYJzjQgxG1PLjHxjiumJ5R5MTDJagcNtlH+MQC4BbtvyHTa/SSEY4LWkfGkoIQQ4zU2b7OwpvR8jLyx/YG/kBEIACYsYNfUbhtfk12yXj3x22VyTOhnFatX6p8ioACDHnNcu0wKgIW1n5M6eRRwAv2mwegoWdcQvaK6ocowEAwCLon2lyAgMIAAfxgOH8RuU9GAkQNKp+DiEnw79us5YwlBBkAMAI52XtdYtl4XZT17s4RoIowkuvms3vWe3/w+N6VxUsZPSDIIjHyhrmh4TwkMSxEEqIrvBcnMN4uS2gKCDT7KRu7uVoFgAAUEaUIhhiyFx32F/l5o7Kaci+7rBOMshgxLdt1goGYJnxD9xv0acX5YcmWj5ThUbbQuHNf9AEHQKEmAuaZVqgBQh1RvrEYY6sPLBv5dWrylx+yLz2kSYncGOzYd3i+Fph7xr/kDF33WpJwgecKaAx7LAiFxkkQNyhaB9ZzF0sTdofBEE8RtZu/IMZUi1/cdpvW60fWu3/4nR+Yegdy41/UBTQaf6KRa+zuHGyEgSAgRBC7l2XMU6jxnppyN5w2C4y2MnKH9gtKUiB1eYHgCgjaR8a1g+s1ttW65RACysX0NrkB0qJ0iVVMM+X1bhuvqHw6n1fQxAE8UhZs/EPiIKc/LZZSvN8XlRmVXVY5OxomVNUKQpImL1kMa5LnA4BAECh2QTLCAB1mI2PlMbQAjAz0sd2cwdGGs3ftFkbZy5prPS6YfvO7Q+Ii5L+lsXylsXyhkWvczQ/37EGIXKwfJy5kygWTnlFlTM0BABFZeN3ZmU+P0DJ7Pi9yprhkmsYv2V+JETlHbMSQwAAwCBmTNevync2myAI4tG3hv1XPOInBAwAYBCbY/kgWrFKhRDFRPW2xfKGrl/UtClZztGIAYBnhFcMy3uadlHTrmnm6zKvQ4ARrqjmjwzLVU27ohu/d7k/U3kbgmaa61f0r9zOPziMC5Lox4jHbL/F9X8c1hEeS5jp1B3/r9M6wWMZM/2q+aau3zCbb5j1y6pcmo8QGrMThutrs+KaDwCR5q9bLO9ZzLOqetNw/j9O+6zASBAAAOyC5S92yyu6NikLfgwgADZevW42/s3jua2pfTzDrlzuKs0Nq/pNXbuoadd081u6UmycHUAQBPGYWMP8wAB7EQQAIIjtmNbue0iOEU7w0oSiTqlqnaOl+ZWJjDClqpOq2ivwNjQ3rC3RbEVWphS5TxTKojIoclYEdZrtlpUZTbugqUOS4EWIQ0xZVi+qSonFIqJzkjKrqd0scnPyxzajwiAZIRnhjKje0HiZmjthNyYqXTwrzY+IIAjDgjiiqlOymBPEXkWpcXSjtYEg06nIk6rSJbCNrieDU6ZU9aKmTStK59xwzvIgACLNliRlSlUnFDnHYoGMnxME8Vh57H//ahV4xIybrX/xuP/T4/lPj/u3Nq1AQzJ2TRAE8Z38I+YHAEDCdJjjkzyf5Pkgg+/TUCAIgiCW9Q+aHwRBEMTfieQHQRAEsRokPwiCIIjVIPlBEARBrAbJD4IgCGI1SH4QBEEQq0HygyAIglgNkh8EQRDEapD8IAiCIFaD5AdBEASxGiQ/CIIgiNUg+UEQBEGsBskP4nsFH/RNQRiiZSc6JgjiEfM95IdJFJq85pe95pddapOEHzAx+PcM8oLFrZmdMi/8PZUW4lRJktZi/qd2XT3lUc8Kj1i5rQZNCxbN5pF5ccUfy2c1zRW2WuzMAzKGZWVD4sh8WwTxg1rj/IAmXn1ppmvTN1Prfzn5xO8nNo64mh+hmTYgpP2RwVudI7crqbxOU6usoylGik7Wenqt9MM+cEb4zOzkj/5j/Omi0fKQV/0AJp5v8ltPa8xDyy2kqOGxjt7xkFVf4SuAkKOzMHCtGA7w6D75AbHkD/a92RF1PP6ZShCPs7XND0g3RzKb/zK9ecB72mYcHUi9UHE1PWpHjRCzjoo/9PfkB2KNhC8YktDDzkYIWzKJ3VOJQ26x7SGv+n4oiJsT0Z1fjj5TNj/M9+Xd7ljZt2J+AIAkOVCJ+D3c/fIDQFa3hCo+q0LygyB+SGuXHxTLNlvNJ7rqT/55YvOg95QhnRNpEwAmnms2lCardE7hW2ThnFVpskjNPDZBAABol8VzhtJkVZqsUjOPTQBQHN9kVZbe5Cadb8UrT4iLOFbSRcWQFEPiF45lIeZVQTEkWedZ5s7Cy+YHYmhBFxVDkhQWYwAQYiRekhmaYwRNVCwCx+PGaiHNiGZRMQSWmS8BjDlFEEUaAgAQYmVBlBjMYE7lJZ0XNVHSOF4R5EUrWQ7F8XNFofMt9NxyJlG4tzTOqlyrwLYY8jmFb9HEs1alyaqcVdm2+XraxHPNFnlh4XYIKADbdbnJqjQZUrPEtWjSWatyVhdaGWji2Gan/fBM3y/+feKpAe8pQzonM+0QLFfaEPO6KGscJ/OSWZJVhpUE2SKwLAIAQIaVLJJiEQWRbnw7eLc7VvU7XYJklhQz31gMAAAQ5hVBMSTFbYnUon4PhzlWNkuKWeA5hDhWMkuymUVz5cnLhiiqDFrYCI6VzaKicQwDEUMLmijKLEaNz5ERG5+jhCEEACFOERSLpMg0gJBVJXnxZhAE8V2sVX5A2OZwHBot7Hhz/Cd/m/35O/Wdo8kX4moLRK0+18GJ8rNvdD1zqbhnqrjj9d6nXu/aWbGe5VC7ph0737n1tY4dM+Xtr3Xu7PW9zEOTN7j97eEN7/Y8/UrXlg8GN77btf1qbdv13IsOvn3ZXYIsZ8Q8mYFEcTRZmCqmUwrPAACxYDeiPdHCaCo/EA2G1YUIuTc/IMOaw67kQLwwmsx2+hwOgZEEez5WHYmG855kb7w8kYxlDZ6FAABGN2L9iY4rSZ97bgpzLMv+znShbDA0gDzvKidyHW6LXfH1xjtmU/m+dGk8nuqJFqaSsbSFX6Huoqh2t++FicKuV3o33sjud7AUAADh1mxy27tDG9/q3nazZ/NHg5vfqD97o/7M+eTBpO/g5fqOi6XdV4o7L5V3XO189mL6oE9ow8DEC6c6Mztfq2+fKey+XN92KXPYzrch+kxnZs/F6rZ3e56ZzO29Un3m9f7NN8svhMUWt/PQSHnbx+d//D8uPvlOfdd46vms9SyLlskPxMrhkXRtPOTJBktXqx1dhiMbLU1GnXae5gRrxp8bSRaG48mS06wzAADe4072JdOdwcxgojQejyTNHAMBwrzTlupNlEeT2dFEZTQV9HKsw5EZTFamcrmiYST8maFs/UZERxTiBEcmUJhMF8e9jSnrAaZlv7t0vtA96jcsDG814gOpTMku8wAynBHzpBqfY4fbotNIFFz5SGGqONBvlzxGsCtVmUkGQjJeNh0JgrivNWx/MEyLWTtZqz355/HN/e4zmtBoT5hYttnv2v/W2M//dOHn75T2DWV3z1Z21J1nVPnEaG3jbyY2jvpOuowTw9UtvxnbWrec0/X9n17/5w879vYUtvzrpR+/nznSmdv21dizSa0ZLtfjxOpGpOq2exVJE0SvOxSSeRYgxRztC/kDqqwJisua6I25nHOz1t6dHxAKDlu00+90y5ImGPFAouoxmxne76teqvYOeWxO2Yj7M90BQ6cBABDTvKJFp2KhsDyXBTStJiLluoNjIUBIDnpTtYDVwluz4fqtdCBgTY2n02W7sxTLdAUt4vIfDEVRLNtsUU5PDv7oq56dAb6xp+3hwK4vLj1xq7hvrL7urzPrriQOnq8/9XHv3pjj2EjH5n+fWX8rdzBkvFxKbf/8/C9uRI6b+XPp+PZPRtdfjR9xyucSsZ2/nFh/OXZMpttk8Ww0tONP13/0zdima5kXBivbbpT2JZQ2hmkxW14arK//9/Gtfe4zutAs0iu1P2hLyp8d9mmqkrjVUwwxgtPiyTkkjpYjkeqUx6IJsqG4cqF00WAQ4L2e3EQhV7LqhqDHg5XphMfDY0UN96UKJbtuEfSAuzidDvp5zDKCKjhrhdGr6UjOYbYbiZmIwVIAIkYQLGF34UZYm//0kaQEuxMdA26JhViW7XG308FjBASfP9njtTslSROMYq7SbXAcZkROjMUu3sxEexNej+zKe70hmV65LUsQxErWdvwDMecy5XV/Gt1asSzuRjfp5iOvDW74sLY3IC60IUxu/74PZ376RuRlBQMAgOZ8/sPpf/5z5SVVOvzB5XXnIy+7Art+d/5n4/bmXGL71+PPpPXl84OW1WAlmOjyOT3SfLcPkKPByoV8ricUr4XinbH6tUIipWKKAvfkB8S0NR+rns9luoLxWijZn65djHs8Autwput+lxUBALDFiFcDDttcE4aiOO9wOLiQHxAKwUCx6uBYCADgXY5YxW9orB51Z2d9Ksd7OkJer6RGQ+musCHf7+NBuG2gb3F+mLzufR9OP9XtO5FOP/3N6Oa67dRwZesnfXtDxonu0pa/DO/MmlsBAIr1wK2xH/+xa3/cfuzC0M8/qD7n5dsBAAzfNNL7038b2hmQ2wCg7K49v7v0xLXEMWXpyD8WztQqG//yLcY/OIcRqfp1TQ1f6hrqEGWH1ROTMcv7p3uGJoPxWiheD2fHsp0XgwoGvMed7gw5rDQAgKKV6FQ8lNA0jzPVH7FbaHDP+IdWyPWPe8W7R8wQb7Nmrt/JDwCg4Hdlh2NOC83psuFTWRYBAF2D1fpUMt0VjNdC8b7iyFsxnUcAAMoZmHk3a+NJZhDE3+UHy4+bPU9fS77Ez5+WSlGt0djOX1158qrvlAQBAECwHrw9+ZP/2XVY+475ARCW3PZwPZLui6b7fHYrhyHSkuHOq6XiYDTZHU52h5PdPpuNnxvAuDs/WGcl0XmlkOuLNBaOFO2awjCPVX7w5iOvDD/x177ncu4Dt6Z/8U5pv5M1AQAwe7a3/ov/HN0eVloBoOyuvb+Z3NLjaL7rfb99fgBJDZUDvmIwVI1P3gxYQx6nGSFOjF7tHbkQmS/tYChj4dGS8XMKiKHxiD+uW8Oe9IBflxC4Nz/SyVpZubdU7skPAGU9PpJKFK0Wr83uEGgMKIrxT3T0zGYWPsdY1doYk6KcgZlp5wP2iyCIB3l08qPd5X3+9vknbucOO1gTQu1u/55fTv/ss8wJ5TvmB2JZhsUQ0ZLd7O5KlMtWiUeC31cYCtuMRo0PGZ6hmYVh9aX9VwibE8F03aNKjRFYzPI0xoD+LvnBB3ylTpfAQYCwEvZlugLfT378dWxb1X6Oxu0Oz/PvTf70V5UDIeOl8wPrPu7enVBaIACidnx24Infdu9zC+33yw/+TEdp87+PbasarSzbogmt7Ao9PBRmPdVg+XzcYTVyb1TyXR4FUZDh3P2VrprcaP8hGnMCBgDwHndivv2BzLbsZMwflBWPMzUYdloZCACt6bHueMD7nfMDIFrPRgojiVjGkOfeFtpquVyHXW5cboJoUcaNLynJD4J4KNZw/AOz56KeQxN9T/zb9PqL8SNhS5OATQC26+rJcnz3R6Mb3q/tLXhP2MVWDAAAFMufque2fTGxZSZ2sBDaf6Vn88e9u9Jqi8O5+8urT7xW2t9V2Prn2Z/cTB4dq2z+/fSWbueZZbutebcrXPAGUw5P3OEuR7M5s8hDKCr+ejTd4fEmHO64I5AwVBUDAJCieZKezHS2PBHxhgxFgABAzrBEuiLxktuTcHjiTk9QFVVOS0TqM9lkXGI5Wg75K1PZZFLFGGBBtEU8heuFUn/AG7eImAIQMlZbcSIRybo8SVd8INN9IR2Omr1die5Xo26vER9JJ/J2VznVeTHlttErnIJlUvUTKe/h62P//Q+jWwYCx4JKC0Rtqfi2Ly9suJh9Yby+8V+m1l9IHLjWu+Gr4e1F97He8lN/u/jzW8V9HeEXL3Rv+eXo0/3O0zLTHAnufXtoy43cC3nP0d7S058Nbx3ynRTo5qDrWFf26T9dWHc1fTBmPy0j0503p5sT8e1/mt5wJfNiV2rfUOSYlV3+bAUAoBwP1EdDqkib+2q9XToCAEAkeH2l6UQ0Y/fEHd6Ew+MXIQScx5UcSiXLLk/cGarHCj0ei04jSfbWItm6zxd3+Erh2uVyvmAWDdUZtcdHK0NTQXdI47n5aMaM4jQCHbGud/OxmNViFRaKD+n27HQhU7Tw82dGcA5Xoi8aK7g8CYc74Q5GJJpnVLfhrucuvZZ0x2yGjSO/mkAQq7aW4+fC6Vrs+fHCjtnSzon08zXfCY1pB7DNbT/Sn9lzvrjzfH7PUOpgRGue/3s3ccKpenrvRHbvcGbPVPaFtHGWgZTTu3emvHM09cJgZs9seed4+sBAateFwt6yvYlZLj8YwwhXw5m+aLo3mqp7DDODIAAA0ooWqATTvdF0d9AXUhgMAADY5kz3xnLDyfxwPFn1W1UIAACYlp3WSD2U7o0mO9w2O08LvJHw54YS8aQmSIwW8WYGEom0zjKQ0cyheiQ3mswPxtM9Pp2lAACQ4Ry5QLo3mqoHQllXqBqOpG2+jkihz+eJ2kK1UCjrcKUDhZGg3catcAZWu8N9YCC1b7K0/WJx12jq+YrtHMKt0dDumdKu4eQLI7ndF0t7hlP7R7I7p7PPp93H+srPfjm4dTa3ZySzd7LwXM3zsoJNEFA0czYReHEsu3c4vW8st6c3cFKhTZBuKsefG8nuvljeOZl9rjvykkEvyg9gUvXjfbmdk7m9w6nnS47T4soXwGPd7PapDA2w0xN0zw1WQJpRfO5kXyTdE4kV7JpKAwBoTTaCjmDJn+yNJstum5VFCAAIWcMcqoQzvZFY2R2qRhJZQ/E64l2R7FCqNBxLdTgVaW58BrKcNeFNDcQL48lMT8gXUu8UH+KsCZvVueiHBDCteOzRznC6N5rqcGoKjXjengqk+pOVsUS6O+wPSeTUXYJYtTXMDwAojEx3bpBqPAihafHjaMmJPRRa9Cxcbvk7L5xb4TIggggjhBFaen3F/OOLNhYuLIkQXrIPEC9ZeO61aNGr5o+JF6/hzusX3gvduS3z3xUPgO/ZcbhyaTAtLtf+d0bXfTP61Ez8qFNsYebKZ5lVzZcbhZauZOkZVksWuE9Rz5fi3D9LS3C+ZBZfDQjhfEku99E0igXBuz6XZZbECGEE76r+IQB3lSeEcOlK7vdygiC+C/L7if9XgO2KfCrlOZr1Ho1Zz8hLWhIEQRBrguQHQRAEsRokPwiCIIjVIPlBEARBrAbJD4IgCGI1SH4QBEEQq0HygyAIglgNkh8EQRDEapD8IAiCIFaD5AdBEASxGiQ/CIIgiNUg+UEQBEGsBskP4rEx/0uWgHzZCOJR8D3mxz/On/wD9/QfpygeFoT5QLAyHLXqtDnhTQ36zSJ+8KsIglhL30d+QIQ5WbF6RJa/f8UJMUvTK02n9FigaUGRNdvdE3bfgRArKYZb5IRHoigQw3Aiu+h2Z1pGAACiaYZFf9exPkI0z3Iiy/IYrX49kA2GJz4aGBq0sTQSbPbiax19E16SIATxw/o+8kPyuau3BvtGPLJ4vyqEYrX05e6+HovArsGOfi/4QvniF0P5GLPiAh535fXh3mGvKj2gKDJXu3tqGl7TCSoQcgz1XPv91LXfjM1+OTr75eilrwc7xz1iY+IQWgoMdfRMhyzS/Wb+uB8I1Yi/693R2a9GJt8uBSyr3BnE68X3Bi686uMaE9ZiWknGZj7p7+uxrG35EARxX99L/xXGctCbLDoekB+06OtMppIyu/Lh+0OBMMPeg35IVZHRXbtPfgAARL83nnc+ID8aRRET/45j9m8Fy1JsMBePCHP/c3vSQyFbo6LHnC0bTZYdMr/alStKdDgX8bFI4G3pYNCzquMCRDu6i+c/H0h673xASJSC5wcufdARdpM2CEH8YNY4PzDmRJaTeT3qSxYdsoQwy3ACw7IYYYhZhhUYjCEAAGLMCAwnLqrGIaQ5hhNZloEAAMzQrMDQeO4pzNKsyLL83PKQxozAcDyN8dx9hl2h7kXYlRmYuXDh4iIz01O1pFeklznQRgzNCgzDYZpjWJ7GLM3wDMM2ZrODNM80NmN+LkJgdNcKCY7mGE5g2EVT00KMWYHhREaN+BN5p6pgzDKcyLIsmi8K+q6iuLMDjaIQmEZRoLmimJvzb8WiQBDSNHufoliaH4jBkk1TNEHSaYga28DghT40iBrbwDAIYkTzi7ewsQ0Mt/ABAUjzrOJ2ZGYyLjOzsG0AAIAQwzOcyDLs3HSPkMaswHAchqhRnszijjukWko3By6/GRMWH1Vg1pxOXfjtYK3Txq08sS5BEGtqLfODYbWovzKWzI/EMsOpfMWpWERrOlwYS+XrbkfQ4ilFi9PxQEhmIJIc1lhvvHIh4jTmKl1KkAO1RNelXDouAsxaU8HiaMJnpwGAjKJ4SqHcSDLXF/J5BYbFksce70tWBsOBkGyO+VJDyWTVIfPLHZxCbIt2DA4ODS8yONCXDzv4ZWoiWo96cxOJVNUT6k6Wh4OelDfRH48XrCJHs7oe6Y7lR5K57qDLxWMMAABGT72j0x6sxQojiWyXS+YgAACynB725IcShZFIejidKzl1m2zPhArj2WLdZQtYPOVocTrm84gYQsFui/cnKheiDp2dK1NB8nfEO2fSqagAGdaaCOQGo14XByFkFMXbKIqeoNcn0gySPI54X7I6EPQGVT0eSA8nUx0OmV++dYVlKTZSzBUsklk0ey3BDidDUQAi3jCivfHydDwQVRiKAgAgRfV3xIqjqXTBagnaw52JymzErjEIQFpWfOVQfiSZH4oHgxJDA0QL7s5IeaY09EFP50Qi3eWz6gwAFMC07HUkeuLFkVS6w2OYaURjxevMjKYr3U5VkX3d8dJU1BeUFxKE93p6P5oaH3HgJR8mEl3unq+nRy5GDelbftUJgnjI1iw/IOK93tpsJhZULV5ruC9V7nPLCs1psi0V6pjKlYajvpgzMhCN5Sw8hjTPKTZb5kYy5JcaB5oUpqVQaPL9otdCA4jEoDdZcKgihCznKEQSVYfhVK0RV7w37vNytMArflduONM3m44UvP6cN97pMSt/f0cY5C2WxEQ8nLZ5qrHScMhul10Vn9Mlcao5OhgORy0Wp2qLe7PdAbNOAwCMgd7B6bA/rFt8RnS0VOvUMcKi350fSyUShtlpDvWlS71uTWN4XdZT0e6ZbHE46os5o8PRSExlEcA8p9ht2RupgHN+kB3TSiQ0dCvr0RBAWPK5IjmnriDIic5SJFF1WJ2qNeZJdofdLpYWecXvKg6nazPZaN7pTXkTvV5dxss2QbAsJy72jL9Rrs8We66WauPORlpgjlXsRnQskahb50YdaEYyFFc50XMhk+kJuoOO9OWU38nRvOCphmI5u+HSLB5zpC8T9LMQYsGqOBL+0tVCyK9qNoljIQCAtdvig+lM0WlzG/5aIj/gMWs0I8q+zki+16lKvDMXSnXYFW1uEJ+ioBINjXx1vr/LgtGSdGdtRvH2+elX0i6DjIEQxA9jrfID0oy9I1UumSGgAMZKyJssORvjH7TdkRtPJ+IaiwFEEM13glCUEJqJBufzAwBAAcZ/qZbzswBhzWfRzBwEFGM2J2dqmZLNGbE5E97MWCZTMdMUBUQlPJDpGXDLLIQQQrzCgAxEujdVrlSqi1TKxajbwi7bXGE4ezHoCxm2TLgyHHDYZXfGKsmMkoiWx+KhlM0ZsTmT/uqllN8nQgBsffV6SYYQAIglf6DzjbDGsI5iNFNxCCwEAEgBX6IwN/5B2TzVmWwsqjAYQAwXOsEoSgjPRH3OOydpQZrzTRTyPhpirLh1zVw5JdMAACAASURBVCpAAHinPX2+Y64okr7CVCpZ0GkAKEmND6UrNYd4/6JotD+G8smETLOMbDdig3P5AQAAgHXWQ9GF/AAAACBGQvXJmNvBYwggjSAEnN2WGc8nCg5XxOaMOhKD2XyXQVMUAICzGInJpMEtvJyxFSLpbq/WGG3htPh0KpLSGAggJ4V6wrGSN5C1CsKdj4GioBwJDn+5XH5YraXb56dupJwkPwjiB7JW+YEYMTSaigcFAO4eP6et9lTV67TdPch8b34AAOhQavRGQFYVV8SqSBAAwNvs1XcG+i5lypOZ8mSmNBb1hWUaACAq4UowmxQfsMeIDvdc/+DDjxf78Pa7U7WYwi7Xk46wEvREyz5vMdp9PhyuBHw+iWexuZDovVmtn5/fjImww8qBJePniLc6S29GdE7098ZiGZ1BFFg6fk7ZPMUuj826TFHclR8AIjGWGH/Fr6iSPWTTFQgAFL2e2tsD/bNz21CeiHj90lx+VPzh0IOK4q7xDxaLdmVRhi6XHwF/oWKTJTy/nUDwuDpe6+qZzc6Vw3gsEFOWzw9G9PXEkhWDpSgAAEWJwfF0omg0ehnZQHjgvZ5SXueXFgbrdnW9PzkybKeXxASSvN6B304Nng+bBTL+QRA/jLVrf/DunmQupyIAAE3rsUC64lxFflCMnLxeKxTsdp9CQwoAwOjmxHgh4Gl0cUDM4LlLFr5lfnxnUHRYM+OxWMkf64sWZ1Neu0BDKMfD5QG/WZkbxGZYjBrjH731UlZojPhryWj3rEdkeVdHNFmy8gwAAKrRQKr03fMDACzr6VfrhbzdHlAbUcQ5HMnxfMA9VxQ0ixsjz8vmB+I4ySwwS9tYS8+/usu3yg/WZssMJ93OuaEaRNPM/KjN3fmBGFshGK85FRYCAJCoJ6ZTkaTGQoA4wR53RTvCmd6Q080vPhUOylrmSu/M60ltcWHQrLWUu/jNYKVu5RDJD4L4YazZ+AfCYtBbnoz6fWZbyB4dyNbHwnYHLxiaMxuujiXiWUPRFk4MgrQoaC5H7tVcruq2uWRu0VVsaqE0fC1u0+cqFcjxzlI80+VxBsxWv+EOGxYry0iiHvYURtO1XpfFIbLsw+zToFUl3BdPpA0lHuqcjjptLAQAq5ZYfzyZt9n9Zqvf6ouaRQkDAIz+eueg2+4120PO+Gg2nxERwnLInRmKhKJWq98a6c/VRsNOlyhZVSMX755KxDKLiwLQgqC7HflXc5mi0+pRuIUaH9NauTx8LWE3zxcFL7rL8UynxxUwW/1WT8SiWxhaFvWwpzyWzNddhlNk5ktSSsS6Xy14zUsGQniXs3SxWqxYlpYYxDyvuW2JiUxxMuR0yDyHIMsoDt3bkewaC/kimjh/8R7kRW81lq66HH6z1Wd2hqxWGwMgZHXNlQmUrxfDIU3T2UbXHGc3wt2RaNpu9xnuXCjb77PZOE6W3Dl/smiTRM5VTRTGQ06HQC/sNcJGMT3x2UAxfSdAaE1LXumfeSPncazxud4EQaxsDc+/ghxnzUUqo6n8YCTeFc72RkMJiz0bLk5kazO5ymg0GFOZufNgseS0xfoS1dlCx1Qm2+OzLBrvpVVrpNcp3jnMhKyq+ivhwliqOBSNJDWepyWPI96f6pjJ16YzmZpT0x5mtQJZTvfZbVYO65ZgVFfExnmyiLUY8f5YYTRVHIoEwgpDQwCAGA+G0+7UaKo4nEhkdJ4FAAAk8NZ0ID+cKg6G453hTE8kmLS5C+HiRK5+IVcZjQaiKjt3yhEU7LZEf7I6W6hOpvODQfOdyy8go1mjfa7FRcGomr8SaRRFOKFzHJa8c0XRMZXJdzmV+baCGAvXrmbd+qL8gFBNRjsuFMp9Xk1dVGIQ8VYj1peozOQ7ZjLZTp/VwtKqGuiIl6by9ZlsaTDocM3V5hSAtKIFapHCaKowkoznzDwLIUZaIlyayHbMFkrDsUhcYxtNLJpWfI5kb7w4mk5XvTaDwQyteJ3ZkVSubBVF1lmJl2dyyawhcItO4VXM6ctdF95M2hQIAIAMby/GBt+qZNMqTcY+COKHs8bXfyCEaYRphDBEGCEEIZ57BNMILb4sAUK08Dh99/UKEENALemmgAtrRve8HK/Bz+vNr/GeVtbcm955HEKI5jYGLa7dFh78LkWBly2Kux5ZuSgwvnu1d78YzS12z0qXKU+0aIMXv4ACYGFfEAKNT2phq5bZOzy32sXvheaufblneQAAgLTDUX9jcGjcq0lYi/hqb1ZKVYN56J8yQRDfBfn9XeJxACHn9cSKbl3Gis/mz9kkhjQ9COIHRvKDIAiCWA2SHwRBEMRqkPwgCIIgVoPkB0EQBLEaJD8IgiCI1SD5QRAEQawGyQ+CIAhiNUh+EARBEKtB8oMgCIJYDZIfBEEQxGqQ/CAIgiBWg+QHQRAEsRokPx4CiuWdmUAoICIIAKAY20nXwF5X8iXnyL5Q/4u6pf2H3sBvgW4TYoe9Hcd5eul0TLhd8B+3Z49L8uOwF480CrItavqgp/aiI3/EN7nbkznJ8YAz9GDd57Dz5PcgicfO95QfmGZVG0dz/xdmDEUztlJ66s1SJCxCCCDX4ji/pfcPG7JvbOr+6487P96rCSYAKFo/5eh9zulp+6G3d1kmrJ2IvL+pOHGcXjqdHxbPeGd2pKYPSMqa5wdFUVg75R163hY4B+HDnFUQe47Gb+zX5LYf8vsHKT50OHV7Q+2zzYUPfz74v55MdB9naQoLanS6OPJa3GYmP0hPPGa+j/yQ/O6OW4N9w25JuN8fCMWqifPVek0T2DXY0TXDWVy9H3eV61aWBgAA1nq49Leflt98tvjFuu5vdup8G0DtXOhQ/pMn+77eGEq0/tDbuxzczqf2Vz/e7tBNdz3D+I7Er+3yp07jtZ8mFgVerHz5s+FvNgVzp9F3eDsT5z4ae//J/o+3u4LNdz1H4RZL5+7an348/L+ftptbfsgKGjc7Jp6tfrMh//rTnf+2Pjt5VKBNAFAAAGh3974zeOGSX5XxA1dDEI+O76X9gbEc9CaLjsb85yuhGDk8lCsUFO7u6cB/aCyv+51uB4vv7WJAbPz68MTNvNMy95xxflNy6rCt9Hzy8n6Rnz9mZ1qV8t7OT54KJ5fJDwq2mDt3F2/uNdvubp0g7XDx1xv80Za/ex8oACgAqUaFdddTSD0VuP5UYeTE3c/gZsfIjvTMfkX/PjqvKGiSq7t7P3/qu+YH6zgefHVz7dYem3eZgqKoFtfVp/r/97YfNj9Y79HApR2+jsP+iT2B2om7gkLO58Y/HesoaY/cl58gVrbG+dGYxo5l1HAjPxBECDUmmIMAIojo+ddBiDBC9JK1QAzR/LR6EEGE70x715jj785Ug42XN/4LIcII3jPV3t2bhlFjDQjBOxPezc2Fh+BCVEDI6uZALRoMSgx7915iT2zii6HeIfv87LMrmMuPLeF0M6JNiDYhbAKNLhpkoq0ngzc2db29y3C1INoEG7U8MkHcqk1sGfjdukCiGdEmiOaWR7QJIhPEpsaq4J2qlgLIBGnT3W8BAIVb1OQRT9eLhrNladcQBXCblHu+8O7T7rsrXxMTOJR4Y2ukeoKlKQDn1tx4X4hNEC96r/nHEZ5fgL5n+fltW6lvaiE/QsVTmG2f24WFJ/GS95oPwju7DPFdjScKYBOkTRCfc1/bMpcfqLGRjRyl4NJSWgEFILWwp3BxsC16HGFq7pFF27mwtQ/sjqMUR8/tgfGrEYtKZnQnHhtrmR+YFv3u8niqMBbPDCXzJadiEa3ZSHEsla04DY/uLkaKk1GvX6Ihlpy2eH+iNB12mNlG1U0JcrAW6zifySQkQLPWVCA/mvA5aAAAFiRXPpgfS+V7Qx4ng2gseRyJ/lR5IOj18GrYkxxKxEs2iVtxSJI26+GueHE8lR+NJOqxdNmpSghgRva6MmOpwnA8ktB5DgIAZb8zM10d/aBv8Ea+PB5yOvjFR45aT9fFz4eKaWmZpslijfz4+hfl13YnLu6KXdwRHdpvtrUCql1OHQhf21r74z8P/n5d7vrO6OReR/Acwu1C9FBwYkfpjz8a/utPyq/viE7v8cabAGqXEgejM8956gci43tiM7tiF/a6sydZxgQABbhz1trz0Ys7YzO74rM7kucPaNa5I26KPx1+fePA3/4p03l6rqabQyHttP/S09npQxy7tP4VzjomthVe3WO2tQHQLgSPhi5tj1/cFx7fHZ/dEagf9A7vi1/ZEZ3ZFZndkbj0XGBwd/zy9ujYc576gdjlHbELu4IzOxOXd0Um90VndkQn9rnLhyKXdsQm99mDTXi5fpq5/Pj1utJb22MXd0VndkYnXlSVdgAoyJ21jexMzO6KzuyKXdgVGTukSG0AUJBpVVIHg9M7E1e2h+tHRGHRypiztv590dmdsclduc9/MfhfT9uNc1LkUOzijtTAUYYzIf1E8OLO+OR+3dZy1+zIizcKwDYpciQwsys+sys+s9uXe5nhGgVl4lzHgud3xS7sil3ckZw4xrHttPGyZ2xH6tr2xOyu+JVnU1d2JGZ3xqf3ukLn7vv9ABTFJ17pm/qgHvFy98xQTBCPqDXLDwhZt7t2OZ+O6bagPTaYqfS7ZYXhLaozG65N5cpj8VDak5xMpspWAUNa5DWXI/dKKuSXGgdgFM0o8diFDws+gwEIi0F/tuLSZQhozpYNpbrcDq/ZkfAm+xIeF8tIgh7yFIYzvbOZaDUQrgTTA35DW+FQjhN89Vi67LT5LI5covtW2msTGJYWve7CdMjr1W0hW6gWjcZVBCEji7akvzBTyNVcdr8iCnf+uimK9l8auPj5UCrIPqC1w7Qq5b09f/rx4NdPxfoPu4Z31H61OdF3HFMUY25S04fib6/v+Wibr3hc9b0sKG0QUlhrUnwnHZfXD/7pyXjPMc3/sqS3AUix3qPJd9f3fbOucvUFc+xo4NLWjs+f8mdO0bhVyT9X/GZzbOiQOfCSZ2J79bfPeCJNjYqagu287bQWOCkq7Uu6sGC7lNqffe8Zd/gsXNK1ZeLDBzOfbIp0nGQQBYCJVk4F3thQurXX27c3/9mmWN8Rtbar/pst4fJh34WnO97dbUSOJH/7T7U3XjCnDhQ+3ZzoOmwp7Sl+uTHafzD82uby23sskaOxt7bkL+zX9NZlG6tz+fEvPxn43VPB2hEt9Vz1X57IX3xREkxScVf5Vz/Pjhy2Fg55xnbWv9iU7TnZaHww5iZz8YX0pz/uemO3WZ9fl3DaM7Wt8/c/T40ctJVezP3yieH/etpuaWYcxxNvrxv5eC8vtUP+rHvq6Z7fPeWOnoUr5QdsF4OHUh+ur761w509EntnXfW9Zxy+cxBSQH8peXtd/eOnfIXjxuD2vn99Ij9zRFBPBV7b0P/Xn2RHDyQ++9HArzcmZnaVPt9QvHAUrxhRje8SdI/1nP+wN5OUaDIIQjwm1io/IKat5WS1wwIBBTBWQr5UydkY/6DtjvxkNpXSWQwhRmi+QqYoITQTDc7nBwCAAmzoei3lpAFEitesmnkIKMasx8bK0YisGrLqtEb7EqmyjikKiEp4MNc/4lU5CBG807V1Dyir0e64z8UAALBkyVzJWFkKCYK7r1Qq6qohqzbNkw/mB1wCBgAAVtcjfYlgULyrkUFRdODy4LfPj96vNma6T0NkEnyH019szs4e4hrbo532Xd3c+ebue8c/xMHNA9+sXzz+gbRToeubet7eq1lbAaCExP7sZz8rTB8UpRaturf89dZg9SVRP8fwbZhrhw8aRYBik/viU4WZ/aJALTkGl5ocE9tqb+w23xlRp8Tq9uzlfY7yi+nPNyX6jxhjm2pf7DJrrULiheLNPbJ2OvzrH9U/eM5WeK7w2Ta7rRlrp4PXN0c6j3qvbi1/uMueOBj/YGO442V6mTEYABby47ebYt0nGNoEgMn9+o/7Pt/q8LRBtlnynLSW9pX++ETXb3829OcnKpPH75Su43j4nZ8syg+KTz1X/O2Pel9/XrW0Adh8p/9Kagpe3zTy0V5eageo3Vzb2XW//KCQcsY9u6n7i02h/GmAmx1T24pvPeOONSFk0ic2dP7myWDiLMYUQCbz1R8P/fHJUOpl9+WtXV/skfUm17V1tTe3OzOHs59sLF87TN83PwAArtHu8x/1ZlMyyQ/icbFW+YEYMTSWigcEAO4eP6et9lTV67TdPVB4b34AAJhEYeKymxNld8SmKhAAwNsc9Q9HJ96pD96qD96q99/MxzIaAwAQlXAlmE2KD9xniuW9HbFMzeOK2NzlZGnUIVAAS0rias/5252N1Q7eKpcG3BKGYOX8AABovd0znw1moty3yo8vN6XrTQCYeO+R1Bebs7MHeQDAavJjc/eb+2S9HQDA+o+k31/XcWO/rLcD6YxnbEf5o/XVjzZH+w9Y/E0Me/86y8SHDuQ+2eKNL65AKQDbhcjB9HtPRatnFu8x9h1IvftMcnZH9Xc/q93ckfj4yersEU4wIftL6Y+eDuT2l//zJ72/+kX2+o7Sq8+JSjsQzjlntuVu7ci+v7Hrq1/kLu3KvrfNHVrxXIB7x88t0xv7Pt/q8DYLyX2df/2nro+3BXuOy+GDlU833Cc/KKpdqe6u/ut/zw8e43mKoprvjJ9/x/ygzS8Hbq3veG+b3dU2VzjIBCBFUU3BT5/s/t1Wp3Ouh5Dv2zzyb0+kOo+7L2/t+nyvpJ51Xl1Xe2O7I33k2+QHRfGJG31TH9TD3gd9lwjikbFm7Q9G8Pan0kkZAgAwrYYXtT++S35QnJ6/VU0mDXtAYxEFAGAtluRkweeYO0iDCKHG3eXyA9KY4Wl0V73PMHo8UJjM1S8VqlNRmwIBAFgQ/UPFYlqYH4+HeL5hxOp6pDcRDEoYAYgAWLSj2B8f+3Sws9vK3X/U8/75oZ72Xdnc+dZui70N0O2Ya1/oShIHtgx8s94fawG4HfPt8E77Y49qtAFoEuIvZj9+snTxgKi0I7aN5tpp+ayl+lzynQ2dn29zh87NV0YU4toYsRXTiwY52HOuaxtLV16QhKUjIvIZx9iOwrV9qrykyqOYM/5XN9W/3lj5aEvto/Xdf/txtvckw1AUPue6vLn65brBX+1Ov/3zvj88mZ85wPEUgG1aaU/ptz/v+vzpwnvr+3/3ZOntnYa1HUAKsW2M2IrZJad1zeXHF1tCxVMIUwC1O2882fPxNpv3VPDdXwz8ZYPbMAHUzsdfrP5y/X3bHyYxt6/0+x+Vzx+SZBNgmvyvbh5YnB+f7hGkdoDbLD3PdjfyA1BwmU2isHrae3VT7cOtnlAzABQSm7X4Mc19FsGz7jfWd/1uoy9yFiMK4Hbt/JNDf/pFNH9ydfkBZEfn+4NjN5M2/f5nYhDEI2TNxj8QVmLBynjAbhYVhznYle4YClgsLCMJesRXHIiEIgq/aCwBsYygmVNXU8msVdW4xU14vaM6cjlmN+YeQoLgraXSFbtuiLJFsXp0s8EglhWc9nRfvFw1JJVdqPqFoD89HHNa2cVjkojnncVodjCeHYhnB2LRklUSMKIZPRGpjgccdlE2S2anbnPyjX2iFSXQmUjkbaqhWhw8s+gqSIoRU9f6x17NOI37/NlTUDhn6d7V95v1ucGTNNcmxw5kv95QePUFuXGCr3jWNbGt+4Nn3amX1fyL3o4T/PxQNpPf2feHJxNdJ5TkoeDQUY6ikHYq9MrG/q82BUsnJN8J7+zW6i+3hIonGbHZXNwfHTxg9jYJltP24e0df9gcTJ1ubBbFnLP37U29+owvdm6+U8vExJ6vfrnBH29e0vhA7ULkUPLmM6HSqXv2yGQeeLb22aboyPOp99YN/8/1/vBZDAFFmYTy7p6//HPHyCljfMvQf/w8XjtBIwoAigscSX/0i8orez0Tzw78508Llw6IDAWFZr30QvLaM8HycZ5bXEwmubyn+9cb0hMHVWeTEDtY+vUThcv7JeV08O0NA39dH0mfEh0vO0d2dP3+yY7LhzilFSETFlvk+MHEhz/pfm+7I3iWFdohpLBxPPza+vqnz3jTJ7TEgewvnxj6ry2eYBOWzvpmtwz9caszcFp0HQ+/ua7vj5sD+VOYb1HKe9PXtgfKL/HcooqebdGre4qfbEqPH9QcTebKc+lXn/XlTmHcziefz3+2LnfpBbP7jJzeX/jqpx2v79Ntp3w3tnR/tdPsO+m/9WT9vW3ejhcLn6+v3nyRp+++tuYOiNR8duKjgWrN4FkSH8RjYw3Pv0KC4K4nO6ey5bFEZihZGUtG01ZHIVa9WOq7Xu6cToQTOtOo1yGWXfbkULr7VrXnUr4wEDCUO9UxYzgzEz554awhCHnDEulJVKazlYlEIm8RZUb2uVIjuZ7rlb4r+Xy3W9fnLuWVUonatWLQxS/kB0UBzrAmhxOBqNnqM1t9Fm/eHy5bGAAQLzry4cr5TGUyne30GMb8dYw0a4n5C1OZynQsEJKYpd3TSiw2+E5nqWqwK10+DE207URg5pnqxxuLl5+3+k/bevfkPt5UfGeXM9yEAaBQm5x8MXVra+bG9uSrT0dqJ9n5/IDKy9E3NxVuPZt89en08EuYopB2OnBja9ev1hduPpO49kzunW2R/mOC0A6YZqNzT/H2U+lrO+Kz29NvbElf2K/OX7dBsU2+i890/GpdrNA0d2kF1+R/58mOGwd5ZmnjQ2xyDO/MXHlOMy9zqTwXORSdfN7qe9k5sqv03nOa1jq3z46j2Xef9bjaxOiL2ds7HMG5HiGkn3aP7A2WXlKjh9IfPBOsnsIUBaWztoGdlc/WpQYPi4uaixQ0CZFDics7Uze3JS/viL/6VPGtfRZbM4TtfORg9uMNxVvb47PbYxd25t59qvz2s/76S4LYomYPhK9sy3+wvvL+ltTsbk/qFMtRALZz7qPRV7dlX30mMbUr8frWyhebk9OHBb5VTr+Qvb05e3V7fHZ76pVnSp9sSU0cFs1nzYPbOj7dkBg4JC5tjWH5jKNvb/aNbanLO1I3nol0HRXVNgAoCrdq+RfSbz6dvro9+dqWjrefM9tbGNvx0I3NlQ+3Rib2Zd/dWL79dPLK9sLtjcUbe6z3dE4ufD8Ys5G/3jl0MWIll6ATj5W1vf4DMjQvsZzIMBzN8AzDYswxvMTOPcje6VeCGLMiyzWeEpb2OEGEObSkhxpCzDJcYyUMBABAGrMiy9/zckjTrMAsHregKMBbnbnz6VjB7o7Z3TFHsCMUTiqN02MgxpzEchLLcnjxDkGMWYHlJIa+9+RKlnfVcyM38kEfv8IfPwVwOy22snILK7Zh2oT5VkZuYeVWzJgWLdDCyC2M1IKZhYsbAAAUFltYuYWVW2jWBKCJCx5OvbO5dGOPK/Uyr7Qw0p2VQKaNkecWZuUWmmtf2AUKzL0pvbBy60vp17a6ve1LT12lsPmUq3efN32Kppfrb8HtmGuHyITYNkZsW7isgUImWmxDsLEjbQjPj8ZDE+LaMG2CuJ1e2FRIIa6NkZZsIQCAAhTE7TTfRkstjR1hxEZXHgWgiZZaWLmFkVpooY0WWxm5hebbYaMrTJrbZUZqlNJcAwsLrYzcwgitdOOO2AaXFjUttDFyCyO0QWSCXOu9m3SnYOfevXXJp4PaFzaVFduXfI5iKyvPvQsjtTBi69LTpheVqKhEJgpDN5NuOxn5IB4z/4i/n0hRWA26Cxfy9Yv5+sVcutPKPejcmPtDkhzoTCViygOuAvn7oXYl80L6+rOpqztD3ceZFaqkxxQFqMU3EzTd9cjfc3vg2n6gnYa83YgNhjxukZx1RTx2/hHzg3g0maDpjHjmJfNLLUxLM9t8wHngHHeulW59yfzSKflUO2o/LZ1+yfxSK9PaJDQdNY42s83NbPNx/fgZ8Uwr3XrcfPykerKVbn1ZefmEdqKVbj3Lnz1mOXaWP9vCtBy2HZ5bTD9+Uj3ZjtrPiGeOWI+0MC0tTIsJrjw4QRDECkh+EI+Kk+rJF10v7nfvP2Q/dMB5YL97/4uuFw/bDu9379/v3n/UONp4ZOHZA84Dh+yHFt9pPNtYyWHb4cZiBx0HG3caDy5eW+PZw7bDrfQj+buWBPFoI/lBPCoO2Q+d0E6c5c8esh86ZjnWaCsccB44y589JZ963vv8KflU49nj+vFmtvmocfSw7XCT0HRcP37QcfAsf/a0dPqQ/dBJ9WST0HTAeeCY5dg57txR4+gR65FmtrmRT01C0xnxTGNt57hzh22Hj1mOtSMyuwlBfGckP4hHRRtua4xStOG2RoVugqY23NYYn2ilWxt3FhZrR+2NZxcvdtdKGos17iy7toVnf+i9J4jHD8kPgiAIYjVIfhAEQRCrQfKDIAiCWA2SHwRBEMRqkPwgCIIgVoPkB0EQBLEaJD8IgiCI1fi/Kj9YCCV092Qf3z8EoQjhA+ebWxYFAAaQW+4phGj/ovkEGQD1h7qrizcYQ6hgLNy1AAAPfEMMIf+gHWcgkudnUcFLplP5DiAAK81j+ANCAKBFuy9AKKy8e6ve9wfCSz8pCoC7J9u5Bwuh/K1/vlHEmF+zjSceI49EflAUkBCy0ajxLZcZ4bymX9MX37QenpXm6wsJMxGGk++pPiysMKlpqXvmi1prPMYOml6o9EWGG1SVHEbonpoUI6RhPL8k9Alip8DqS36DFno4aUzgjHuKU+S0P5l5fX6dImK6ZbmDw4vrfRriCENry+0/RYGQpF7S7yrYudsNXTvP35kDi8dMXdFGOHxnLmEK+nlxUOTM9y1cGytOSLxj5WUgRGFBnpEENwQAACfLl/klJbASFnF9smhf+A4gpi6L4UfrRwehn5P6eXbhm2ll2B5ZDGF47zeBobkuSYzR6N6Jx1iay8z/LayORHN9ihTGcytnGeGSqiQQvM9HZ6XZYVn23/vz0ssJS/rs/9/eewZJct0HnrF7utDxqBUoggQpUKJErsilWZEAScHOTP6f6l9iDAAAIABJREFUTe9NZWZVZbmuru7q7mrve3qme7z33gLj4AaOICxBEgDN0q0okQuajdUuJfFAXqw2dBsbF3Hf7kO1nenpGTQIEBDyF/lhuiYr66V7v5f//3v5DDX7dmgzpvxOebv4Q8J0TDc2yVwDkAkfUfXzvnvGNqc07UJYeMJU+0WmzfuDr9WtXQqXFm/Hl4z7HHeELXefvF4IoJgS/dpNM4ZJn2b28zkrgMbkE7Y9zDASwGXyySD4SibTXJ6Nosu2UcEAAALmR1z3mCZamGQpz2NAAASRYcM7qIj2lT+ITNn+VaBqszURRrhd0XbpkiyAikiWIgJAEKlLyqhItavKKwgw6CVP28ZGXVuvLVqmdeO0Fz2izldZjPBp0zmrUgKgEFqX5QSTfts9pSvhsudZp/JZ15kWydU1ZhOJsHWmc0KXMwgAIODKcduaFOkV1ahA5Af9+eP2lUzwuGNuVJWe2Xf+m0zaaXuDBABAQmh5q71V4BHdPqFLcxeqRNhaw94hcemqtk5Rc+53zAZFGEi3Zj6y4CJ5Ls7/p4yRfQN1MyNskxNc1JUAgyBAzTRPGloJLesPrhy03N7ZaXdEQnxCrjUXdKT5zzlaEaf+eLfzpvoDyUwaRgIAiIRVCFGvHXAQAHXq9iVTa942CECn0pkgejVJLqjcQc2H/bmqE1UV8wlLvaLd6kvGMdPpWtAmFaj6eBi/ms8+YqvR4pURks5lwqPLzxCOxb1O5jue2Uaveet5onFYXVTda0w+bJrDknIhcMcIqcjqcd87b2ldorTOss/YRgEBADiS8WKu/Oti4WfZ+KWMf8i0Hwoyf5sk/1gq/6qQ/CxJXk2SH9pzE+MiU7L/L1fCgNpU84Vs/tUk960weMj1f5jPfjfOXDDNYYoAQKZ8UNF62RIN2263+PdJ4RdJ8vPFyy8Khf+cJBfl+X1khK837GMyBgCfy/d5zk5ZHHTcXYrkLN6mIOC6Zn0jl381SV5Nkp8mhd+USq8Vkp/mm5/kfxD7WyQ694Z8l0q7Tb3BMAEBADhmw5o5yekVzW0BkTIXq6K01fae8uwhSSwzIgGyqbjZdI+oPGB8ynQbGJVV66nAP6K8kfb6DArlNS56C67SQNQeD+NXk+S7ntWYPaCuqD0U5l5Nku+F/jDFCy43Mqabu1TOBJCA98kIAGRMLIwwQE7SDllG+0wFzbZZ9g5VLHPlmGNtV6UWrj4Ye3s0pS6K65zwOVO239i+mJL1hKkWCBKItFWRCvg6sUdfVB+PS/8tSZrn8eeF5G+ywWaJSUutbKvek4bkN5tBAhp2jPobK23KO5Q30R8IoayiTyMBAZict1AqLxsZpwipCBGAiuYeVcU8ZUXV/aoptzCak9QLgb9TonOxGgJIw7RNc36Sz88tPy8Uf10s/V2S/0kuumSqAUYAyCS0oepHbDW3uLmEsPxYlDsnXieG7ov6OUNrsKXvPgTSiYzVSWZado7q/ySf/2lSeK1Y+JvQ7uO8xpBKxO2mMSwSArhLN/Zbsi0IALhH1w9baoWQgNKSpD1omRMSa9PcZ22tRxKLjAWUuhgAUF2zXsrnf1oo/X/lwt/mcs+49qQsH3WNXkY9ppzwMg9ZakLwXFisrKg7DSV31TNTt1t8QONZxhIutktSfWaR+zT7Pl0tLthFiYrbvPj/zoeHNKlb1s6bejfnGz3/mK5WKWvlYpFiCiAAyFQ6YNrrZRZQ6l+11BXzvONvlqiEBABAgFoU44iulClxZteJGctS6hO2wQmeC7wRNh+60Shfp5ntBLVo1mZGdQQyFveY5phILMbXm24nEiTK1xn24TfmD4PKD+Vyr+Zzj1taPOsPX9KOm+aoxHzCN9j+1zyjRkGk0k7DnJK5T2mHbj/lGgkCQPKT2eyP88kvi8VfFfLf98x1Tvz3hfzPksIvC4Wf5/M/yed/lsRfdvQqxgRA5eoxJ/PtKPNcYE/LYp5gLvBDnl6lGAMUNP8BVVRXtCMixg6hPqUB4yXGQkq7Jalb4iGlWS4d9IKTumQu9UWXK/ssb4KTuXPnEiyjZpIDD1ruKwtutJ8Vy/9ULPw8yf8kn/9JLjqpaKfMdN7ddyNvlj8wwhVJ2eY4RxRlRFWnTXOnplYIQtd+BCGIVBjVEbQama8GwVfD8OvZwi+z0Qth+FQm+mHgjC6Yr5AiHBEiIhww3iJyn2Ad45JinbHdYY51gg2Mmk0nQYCcpOy7yh8AIOGlM9ULUZlyUl/aH4IARTN8wZLmHoMQQjomkaSdsqwhTkJOTUB5Sd2tqzVGWxTtrOMe1jkTBJFKW037jKGOqeqEIpco0RAigMac4IiuX/CDPTKfS18ThFRMsorzmqdoGCsIcUTaFP2AwhwmjypKCyU5zqLZ4LXO5COWNS1dOZ1Vt1s8LZOIyfts9+lM+NUw/lkh+7UwfCGMngv8jbM1gIpJt6Jut9xHLWOrbuyz3Wcy0Yth+MOk8Go2+1IYfjUMLxlKiEEAFIv6UUMrLZWHQEDaZGNSnI/syUQ84AYveNa0ZjycybwYhs/PLt/LZ5+1tXZKQoIwgCCggqzsdaOHTW1MUdZq5ldyhW/YSoWJu01jgBNz1h8EswHNOvjG/IEAZEyHDOu0Pe+PNs2+3zbbCEIAqmg845gDHKtU3KHr3YwAgEGlY67bTREGUDDWCdtg2Ad1KStqj/rOMCV9uvW45/RzqhMSMRah5kMA7tLNhz13j65v0rVxWQowAqQ84BltFGMBqrp3TuXXih0tA0akrlkPB5nnw/DbueTH2fgbYXDKtp+J4h/H0dO+t5azPCXKgtvAZrxHUYYVZZPpXPYzh3VlWFGGFaVL5CZamFdDKsb67JLTg2dMpUhn/hQBxNQe70reLH9QTMd164lM5pLjnHach4LggmP3M4yv8ocAoBK+3jBP++EPAruXobqRed73Lrjug2H+p6F33nXv94Lv+84wxwCgEXGL45xz/ec8o4CRzcRNpjUpMQ2Eq+NXsJQ/BEAFST1g20ctNZx9oLG4vNUwRkValvUTtrVdkzwEIAhNf3QxEnB5q20fMZT87My2gkD2x7njMpVn/xy0rBOOc9INXgrDx13rkGnsVtVpQ+1kxCJ8o+N82XcGGQZAkSjvN52n4+zLmeCcZfSJzMW4IpsP+saArO437W5R3GbqdTzXy2UmfmVQPm3ZJxznpOOccexjlnncsk/Y1mHLWCuzmUYr5ttt64i2qA0rCDARFM/KtEc1H/X986573s38uBA96Lr3u+4Jy6gTBAAE4bqsn7Gt/ZZzXMYa4aOq3MaIDHjM8fapcoSRiJCGUDOcIxE2ZtjHHefEVctxxzlqmjsUMZjxGCoq+gnPf9BUygTZjNcY9xASEeJAN3rhd3yjMvskJwh4ve2cct3zfubHheRbgX+/6z8VxmdUaUl/HNWVXs1qnrgAIwQgCLhTMw46zgnH2adJcwkSAbMJ3TxuO0css23RBI64SzNPLvCHw+UxVUkIQgC6aFw09A6KYEE/tJykn7a0BXFRMqZbxyxjiyyqCHFM1+rWQV1yQECCwJqP1wJYlG8wrTN++MMofMp3DxlalWIg2pddvYUiEFCv5RyRlw4cXRcMiCMkItRlZI6qcowRBTzueidkbiF0RY8vAnjE8l/K+Gcd55TrnnHd045z0nEfy4Rfy1gd1w54WQviV00MURtK525/9/Emxq84Qp2q6gsCR7hVEquMsqXiVwKAiGm7rExZ3vOu0UFRTfcvmfp6Td3sRt9x9ElVndCtZ1276Q8R04ambbOcr7l6DgMC1Kaa5x2zk6Lghv3hMXFYNZ9PvN7ZImlM2uPF/y3OXDC1Kd044zobREJg3h+tmnbCtTfJ3J3fjvRUPpiejbcIAior6riqTejW07530lArlI/b+gZZzgMgABHRbknuFDEASAibgPstZ6+mDinG5SD6bhQ+YBo7LfeFKPvzfOE/Bs52TR3nM0EoBMiS3f+3kH3Cs7eq6piq73X8H+S8TZLYJSkDspSjxMAzISxBICOWdcZUMouOA9oeZfdxHEn6Rdffq6vrNeflnLdZVTca9nOB0yAIADAgj7JWSdls2MdkHDCxlTMVgSCgZv7DXVwHUUTKkjqmqhOqOq6q6w37CT84bWpjqjqqKiWCbYybyXxGeI+iTanabkWKMRDMJxWpTDEACMCOeM5OhS1sdEsIEQCNqxdde4hhCshlUutSzx/jVvDdjH/YUCd1/ajtbJW5iiCQrOOWuUVTx1XtqOtsEqkIAIhOWO7TjjWtqVO686Bntc8r5Ep/wPye0rWGtVsV5yI/MtcuBuHzjtnHydzlhhDZZGf+Y8bdbVhfDcOX4uxP88nPcvE3ougbUfRKHL/g2wMiDSltpRgx7YKpD3DMCN9gui/G+d8k+e/F0dej6EdJ7tJVfUNeL2165qAieQgEAQ277lGJKQAMYwvPJ8aa/jiviTICDHMLblO1s76Wm7k1SJdqfSWKvr5g+Vau+Kt89jvx/CeXLW2dphbRdaLBKf/CeFP9gccUEQsCBdTKWY5iWDb/oYr6eVNrpaiieTtEaiAUqN7jKlEQkql0xjSH5+NXyOPqZUNpNiolRMuMWniJ/DlcO36FgJ3NOX3z3ZlIXfeeNbiBgGDSrVmHVc5m41drVWVc1TvIop7BApJfTPyJxV0tp9zcY6Z20jRGOOEIKYzvduNfF4u/LBZ/WSz+upQ842gZhNsU85Vc/jfl8j+VSv+Qzz7peU865jDDHOGirJ20vXUikRFqhhoiyXg+W/zHYvE3vupToiLQCJuy/MsGUwA4II5pp6RuEsnsgxHuN637LDVedBzwjijeSnFG1J7JFv+xWPz7Yun/aSn/Y7H4D8XCLyKnsmDf5vLnGkIqBgbAAI867l5V7pW1JwNno8wWHuaC5v1NPt5CQKbiXtMeZAgAECA6XwWjiPKGTCOu7FCkCIMg4EHTPawrGQQCkU/rymxuebYMABzA5Or9llmnWEPipEo0soQ/BjX7lCYqCAgiDdXao4gmAoqISUin5vwwl/ymXHnZEE0AX1Tvd+xeijAABjJk2Gct2Zy5BpbwR/PzNlme0sSFnTUQwg6lnZrznGfXMEIAiBjfzSd/lw2P6KKKsM/4mO486KgFSkuSetKLHtS4T4iMgCAkATCmXTSNzZp60La3KWJN95+xtYbIAso2uu7RaySulwfNHjQO0GlkjqhyhIEBnnC9ExJzCd3ixn+XCyY4mR18g0cs/5wm8kW7jFtV7YSnzT2aSxh7hPdJYpWzkNIMpa1G8IKttnOWobQiKz2c+xgYQuztNyIn5U3lzfMHcinbaSgBpVkqbtTUQZmrCODaV5jCZ/zRaUX/tVD6dan0m0rlf5VLvy6VXiuV/3vsX8sfc7xBf7Rr7uMaaf67UzWPzvrjouM+H8Zf950BuiglLQjsdC7euyC+DwJMuuE4Ey9mcv+jXHqtmHzTN/fp1m65WSY6rujbFTr7ddRjObtUOUbgiNpJwxgRmUdpWdZO2N6kyLcH2a8bTERk3LR2q2JGsn/tqRu93K9LpX+qlP4uCR/xsr8ul/9npfLPhdwLnjUky6XmlhHbYFvHF2dKBYE/nLj9BNuEBJQGlGap9nhkVigNKI0obWFMmT07c/5ACNd19z/ki6+VSv9Uqfxzufj90O4UxQalHprbMtSMzCMKwwAyFQ9YziaZBZTVFefFjDc029zlAKoA/qw/AKCsuU87VgfDhqjtVeTcwnEwTH81KbxWKjV38L+XS6+VSv8lFx9Vlo5fNfMfzRO3WxFNBJJovBxnX7YVH6EBO/OELpoIdWjWBVvxZn+lRTbOuUYOXdMfGFBFVrabSnaprqoE022Wt0tmRMDbouSwONf/SpAJ3+mEa6mAAEWieimwu2d+BRVk/dl88lq5/L8q5Z/H/laZRxhnFPeyIcUYBIFs8s2N4oIOaQh5hHgEoWWbXwShfsP/flJ6rVR6rVT+53LhvySFfyiWXiuV/kel8j/L5X9McicVyhAyAZqbavrjIUPNUhrML2zEMM54WmbBzwkC3uT4T9hajBEsjl8ZsvOLxB9YpmQp/3J5s/zBiLjfybyaz74cx9+Ms3+by30r428SCbm2P3RRP2dqNYoqmreFEwnAUtyHZEwBRCqeNo2hBf7wuXrZUJzZD2RMcpRUFPOMZf+W/cHVh9zghKHttZ2zhuwt2jIa9HIXVKrNf8ROx14PFU8bxgDDAIAx26Rb+2XKEGKIrVP0HYv9sVtVQgQqV08Y9qXAfzaKvp3N/+ek8KNsZodIXMZmB3zM5D8AgGM6rFmbJSYj5IvKAdMcZpgsuNsZlQ5Y1m6ZLerCS7RXAq2NSxej/A/j+DvZ7Hez+V+Vk7/O5X+RT36cy/80H20mV/pj0c4u1X+3ufoB3z+vSRqATKUzQe7H2fjlKLxsyQFC9qJnNhSK6i51xh+mZD7kmD2MdCjyqMTlJbYMMlfOmEaVAABQQBrmO0y9j+Pr+AOzPYF3RBVNAEFAQ86MP1oU46w9l7FAbYp5ztFCmPfHqQX+wIByorTeUIoEYwCNEBkhGZNWkfsEAQBCdIPlHlHnSj7ff9eg6inHGFOUAVmZNKwHtCu7JwlMO2/oA5zICIkAgeY9oEshBkEgm31roT8oN/+hWPpVbHg3/kYDJB73zGGRcFgUv7oCDKhDs74cxq/E8Tfj+OU4/mYcvxLHL0fBcUNyFvtjzLanJa4DwFX+eMkU32C0LeUdypsYv5IQ36IQAGCIdXGxeO2hwghAp7xfNfYb+jCnI6Y3xYgIYHJlmCKVyQcc9zHbrM8NbsKkW9Mfts0uSmSEMCCbSpt140IQPO4Y1cUPJTIirYp21NFbKZl7mQQFpGHxYs4dR0hBiABQTHsN7ymdcQCKSZ9mn9JEFSGLa/eb+gAnrqhd9JydMjPQfAJAZuY5R01mzYSw+rXI22U4Tzsz0TaM2RbL+6rnHLSsA5bzhOvskuf90Ws5R01jk6oMasZ9pt7LMAIwmLzHsBv0itFei/zRr2gHLeu47TzgOvs0OYPRgqOLYkndb+r1xeGgQLEvKdSjbJ1hD4jyZsM6bPnfzgUnTPuMbW9RtfOR1SrckD8QAF8wGM1g6inL2KIbO1UxZvIhayZ+tdSJRkVZ368pTX8QzPtE5hPWJ0ntTd0CWug8irAvahcss5sTm0pbDH1AZK2iGBFkMHHKdDuRwAkf1+3jKmcAFJN+zTqkSS7me3z/rCHnCDapeDDIvmjKEQaNintta0pkJsYmYdsd75DGJEFAABJmE4b3uGe1EdSsu10uTepag1MLY5WwaU2pUBKL6mOes0lmGsYZrt7v+ZskymfKO//8AYACrhx33a8E4dfj+AFTLWLEF+yawLQHLPOQYaxTpBxBrUZ4RhU9BAKwvb61eYE/MJGOe+GPMpp9Y/5AgGLFuF9XihjBsv6QCPEJ5oAsLpUxMIQynGUJJoACzmvifMNIEPB46o+Uq3gT/SFicVLEAEAxa2fiwnc3LaTZ/2qjae7W5Czja03n8UywReQRpRGlPqVZSd1rWRtVuUCJDEAQ6dXMo4Y6KKsHbOeYqdUo8SiryuoO01ivSAVKPUotjBmAQMR9tvt0GH4nGz3t+3tkJgIIgKuyfsHP/CDJvuj7J0wti8ATtUuZ+AeBPcKQw5UzfvSKbw9LfML0vhcGpzUpK2oXw/gHYXBA4eZ86AZ36cYWaaYLlq9axyTW0O2ng+CwIoWU+lwc1a3TlrWvuRh6D6cKmukgNGR7T4fecdM8ahinbWuDJOUoKcna/Y63QeYBpe7MKyiQTmhZdf/emQmVGVTaYblfj+Mv2+ZR2znrGD2MNu9hhlmPok1IbGHnK4zYLkNvI0gjbJ1h93BxQlHXquqEqo4pyibD3G1YD0dWy2wNxYk4bTjHZCxh7BDiUeoRutZ29qhKhZJEVDepSoEgBIABDyjaWomLiParxsUg80rgb5SZR+nsQuxZvTX9cUBTyoy4sytkRWlUUTsY9SmtylqDEQmAIuISOmp6j2ai78fRc4H/gG2sVaQKRQQhi5AWWT3kuB0YYkl/IIhe8sxuCo6onvGjr3v2EKeRYj4RBE8F/gOufdAJXskEFzUuIZyTtUuu95jvP+z5+1SxaTIF891+8I0495NsfNkxGxQjwA3dfjIMn/L9y77/iJ953tZaKRIxHdGtC75/2fcf9rx9ijQbx0M25VtMe/eMP0AltF1W91vWFl3bYlgP+s5Ghc0NRJe4/qifedg2JxWpSNmUG1821RojHpPPB852WQxmB/QwROqaufHGejdhQAFXt+hGH8N85hJFY653tT8YooOKOigSCignm/fZSgahoqTs1GUfIYdJ2y1jVKTNAgsC2eg4u1S5eXMVNe+yoVQZ9Sgtad5/sKTUH+9O3szxgzD38jgkXTu3JgAwhPOUBgiwAAqhRVE+7GW+FkUvL15ezHgTFGuET5tmB0EUkEVZQzUuZa5c8+UofNA2WghCgAPK8mxm8THCAAKAgkl29sOQEhGAIRIylmPUREARDijLUmpgZBKaZ8wnWETYpTMbWdhGlgmb0PQawQTIZk1SQSAIB0zcYHtfjaKXo+hbcfytKHo5il7JZn+UT/46DrbKvFm5K5S2iOK0Zu5WpZjQQcN9Ooy+GWd/lMt9P45fjqKvZowEABN+wAm+G8fP6izDWEkUxwz7AdeZ5NTEyKJ8QDfPWWY3AQS4Iqo7FDlaPHgwkuQRkUkAEqHDmlFEQASh2Z2BIrrB8r6di1/y9LkWrkrFLaa7UyR9uvXlmUOaOatre2336TB60rWnNG2YERUgx8VhaSa3jABnReWIm/levOBchJlHTDWDZzLqeUnboevbLfeFcGaFZ3z/Psf5chi+FIWXLG2dqmYRyinOc2F0XpcKfOY0ZSnGgoAABZJ2KQi/n4ufdbVIEDgmGcaylGgLTpyOAAD7tPlFomGSYSxujiwB5FKaZyzHmL4gVOXPXg8xnXn7i4JJxOYvnohgDiAIwDEOZopE5yplASmPRtHfZMM9iphjrCxKO53MBUtvI5gBMESGDPu4peVneygpVBmR5YYk7Xb8F6Lo+7n832ab10n8o1z2e3H8tdDtwoAAsoq1V2biDTx8yJhWZXWHYfQzMvesIwhku+/um23izBGKxmOe3ccQABhU2umYFQQW5RstpYQAA+7RjE2KZCMBAARAdVk74wUvhtHLUfSUra0znK+E0ctR9J1s/qeuet1xVCn/InlbvP/qHY0gQCDyAVnUmLx22XdEMMI3uv4xXdJf/68gQAWKNaI8ls//dTY+p8v2wr6SCHuUlRFImE/IYrz4LXgCkBKlzRcyYgGpV50ohJAlioUFnyiE5Dm/7hBojuiEYVSXfTHf4r0AlRAD42vHMm8IgnFOVjvfZr1FJULaFSVkypNh/IM42sje0uJhhLp0+7zj9DOy8PAKAplQuH1jL0ZcAc13RqS8O0n9kZKSkpKyElJ/pKSkpKSshNQfKSkpKSkrIfVHSkpKSspKSP2RkpKSkrISUn+kpKSkpKyE1B8pKSkpKSsh9UdKSkpKykpI/ZGSkpKSshJSf6SkpKSkrITUHykpKSkpKyH1R0pKSkrKSkj9kZJyQyBZ8fKOaTQnoVwj5j/vtv2lmf2i2/lZN3vX2/byF4Q1PLzd6/qsmbnD7vysV/oS4wIAsVsyXiiRG5+T6ncH0s1si6dKWPbMoGyJb9dD/S7kLfIHJlQ2GKHLrPJORRAQl0RJvcFX0L4DQBgzidzoO3XfHAQB25H8NqqUZTU33Dmxo5aNJYwAO7dVzv7h0IO3tB/+wPBzN9X6b2/O1cS8L3itt3P+NqqUkfHF5MDNY0/e0rrzQ4PP/kHXtk/J0hoAmh3vHD3UmnHY8tPivtmlkzTOleXqBWQ6HduHNu4smSo2Ctm+I931duMdob13A2+FP0TfaV3f3T3kK/Jy9YFA5bi/pbWq8rdGMwgZHbWRfb0je7raun25OXUrplY5aekOFH69r8/i9nYMba7lcvz1VXaiHDYqI/t6B7YUfVd8+8iHe27LeFt7l81vbMKipUDE9bu3dI3s62rvdxdPXIG4aSXd+SgU8bU3L2hm27rOjVsz5O3yZnBqN1qnzg82elxJRIJwrzN169g3/8+eox8ZePa9Pcc+blr3AoDU8snuC3/Yd/Djmr7mt/Krgni3P/yxlsHbKJ07hmuofXth50c6jn6o4+iHW3d+wg7vbh5IFn4+2dr8/EOtk59R9TUAIAir9P6PDbzw3p59f9771P8x/MhHgtydGAkAILp+z5GR6a2JttKmj8DFsFEZ2t0zsq9kXXGmCLXK+ZaGryyjUsrsSjK8qZJLlpy5uImY29y/94HuQiQiBFhS4omu3ed6W4vphFVvC94KfxBFzvS0dg1GmrKsP7jRtmt4bMSWb7juXjGCADyfjG6u+IkTNwpd07XAak6pKoX9XcNbS6Zyow0cKcq0T9VLefH1+QMT2db9JNu1tzWXqG9NPSlExUKGLFNxAwBR1ai3tavXl66csft1gETRybq5nmrv/kRd7A85DBtbO1tbVXKN+SgBACgzOtv37wnpjbckFN3LO/Z1ZyxZBi4ZWd/VliiVGIZ9J6c27Co6BgYAlvt07eItLcOfKR36QNfhvzCcexAIAEC821tO/uHoyY9pxm/BH/r4Ld0X/3D8a783euiTXBQAANAamvl89egHhs5/1CveFq77k94vv6fnwCc0fRXxbisded/Q/R/J9X4mt/3Dwy+8p2frZxVtDfVuKx3/UHXqk7l97+879+dOdkYeAACYOJ2t0+fX93TpeGUzqWAs27qXz41c7gqvaG0QHvV3Dm8umvK1t4wwD4KeyUq5uGhqRIwx59zzvHK53DO14egLJ3dsLsiiiDEGhJhr95zavPVQu2+8Mx5BMplM9g0QvwGiFfG69u4tiV8RohVzbT2Z5f0BCIu6rMjkLYhaCALSLwpvAAAV5ElEQVTxx9s6W3UAQISIqkhnqnBEZUnW+fKV7EKQrCRDtWLudfpjphhaaXMpfkv8IQjYGB/qKLHrzCREmdmStHV5b8QfAACA5SDuvNIfgCiVdFHk12nzCnF5364b9wfiYdQyVAyMFZYVAKhpJ0PVyLqqVmJyPNy14+GRet1oziiP+L2Sexdjq5l1p6ivQnMTa0p3x7ve/9vyBzHuMLv+ovupfzXvD7Ja6/7z/i//ft/uzxJBIPoX8wc/MPDIh8PcXTS4rXjgg419nzC9e0jmc7Vz/2bdox91wnsQXcXtu5i4ipp3Sta9aLEnqOsPHF+7/UBJeQPnWhD0rkv1K/2BEJUlRWPL30eCarQOJKXCjD8OHjpw3WVkdPh1LSverzdCZjHvLH+8LoW8mf5AiFpWsTtX7I6Lgy0dPRndFI18ptjIZguGYkpWIVPoytgOx4BFy4ja42LDN5SZ+k3gUlAJi925XCwCpkbWSzpj18QAgCg3c36hO1do8y0dA8aiY8bt2WKbZxlE8uy4HoWJzukSF68gAFXUsDPfc2RobLpcbGSzFUskAgCiqhZ3ZgudGccXsSAAAJJkpxSGecMMrVw9LtY9XZup0gQueaVMsTuX9MS1sfbl/UEk2atkCt25pOoslOjV/hAAcdOI63GxO5eNJYSAyHLQnolawqQjzlcMKx8mdd80GRIEQEQN3KSRK7RnXJcjBETXg3Lghpqd8wpd2UKrJUsYBCQ6ZlQvjz+6eXJLsdwTuv61I2aUmS1Je1/kl4Nidy5pdTSNACJqYCeNXL5iyrpk5vykK5cJRLKcBa7yB6Za6CaNOFux5NnfFx0rLHuWr3nlTLGRzRZnztqsP7BoGdlGtlA1lzqZAACYc6sQ1bf2Td830D0SZ1ssRZptC4hK0BoWunO5gs4ZCAhJvlvoyhYrBqVi0MgWu0I3I1FCzVJUW9e9/vxI72icq9qKiGG22MSyarvH95zpykdsmb0FAJDujne/f/yBDxfGPh32fyrs+7Rb+iJjAoCA1Tutrk+F/Z8K+z8V9n3WTu5sFlFAq7n/Ra/xmbD/U2HfZ9ziHYTOu4fF/77++L+e9wdeIxU/U9r9x5Wpf88FAct3xDs/1HfpVj+6G5HVVL2bq6swXSWWPt358PsGD/w7zVi9fHkRVyo7Bnc+OtaSuX4Ii0iKXw0L3bl8yRDFhdfwlf7AkpptZAudGcebuY9mtiArfkum0J3LVyxVQjDrjxvRxor9sXDJ/I54x/njxhXy5vkDEdtp39w1OF5oGSp1benqH491SzJLcetkfWRLW32iXBlo6T/U3dHvyQRLjpXrKg2e7CjllJlbS5TDwc7dl/qqiQSEWW2VgQ2VyCWAqVGKa2vL1YFC60i5bSDv2lTy7Hx/dXhrfWC6XBysdG5o79lUdM0lmq+CAEzVs73F/mMj45urLQNJ0upITX9oer632LW1vW3E401/yEo80jVxsK9/qlwdKHXv7GrvciQGApf87srAVLVtqFAdqw7vbZSTa/oDS3LQma+NlloGCq1jLdVGRpvNA13tD6LbpbFybbDQMlBoW19vKYhU1Vt39I7uam8faV93aaBruNC+oa1a90RGlGymbapS60+qw+W2wXzGY9S2K9M9E3u7GuPFloFS395GqaRSjCTPynWXxx7esm57pXUw9jPScv5oK/dtrneOFloGCh3TbW09gapyLQz7T/X1TIS6IbmdhY611Xwk0dfpDz0bVCdau7eWApc307ZSlOnY1jexq719pFAdrPRub4t8jtGcP4jVmmvsaK+22+wav4VFbpfjju3902eHetfmkzZHlQkACEzNDpVqI8XqQKG2tlar6ZRhOQx79vcMTYScybl1PZN7y0EkU8KsarZ9urHu/rH+yXyh3VWleX9IGb/35NSW/bXAXGZnm6veHe/5o6lXfn/igVvzk/+2euJ9IxduDfL3YPkud/2H+h95X/vWv8hOfLz16C0DJ//MC+4FWMMzny8fubn/3C2VqU+UDn1g4MKt2fqXCJn56Sv9AQKQ1URaRcTVAGvk0qdr525u3/JpRVkNIABaw4Pbc+s/2nXxj/rP/WmQvZtcLyqFCAsnenc8vmGo43rzlzMlN9jWs6GlNlTp2VYrltQ5nS/hD1kvDJS6trTXBl0+exixpMY9LT0bqrXhSvfmWkuHyTEIqvG65JH6413jD0LMenVkfVbhmIii217sHAw1BSGMxCjq2d7oHsgYGldcVbc4QQAIIayWd7UUE3W+1peMnlP9iYkAgZJ1/YxGMBBdT8Y6khwnBFNVTwar1bqGAZButkw11u+sZnxZ1kXNlZfJACPC4ql6W1nDBOMFz9iIcL8zqU4Ec1lfpVTsmmxJEoUxotZaekZiW0fM9+vr24pFlVLMTLO6frn8hxJnKoNFz6GEYGo6leFSnJNmnrGu8ofd29XWsBWJYIJ5tmVybywSFo1U2gZ8VbMa50YrGWbVitXuyHD13Hij2iIygomsxo1CrccilLld1e7RnO+LhBKrr7OzYSti8/CKLcc3NGoSY8v2laPMbiv1ry/6HscEq7moPl0KMxJGxB/vbO3yFE6dguMn6rLygKXjVwjLnlNel/c9sekPrCjZgVqjP6PplHAeDderFYWSGX+Iphz1lQJPXD5pgzC1aqW+7W2hjebOptJa6xiObIMQgpmfHdmZGCpBCEuh3zWdNxQlWVv0bNo8FAgTJY66dndnXYQX/RZS4szg/Ru27G/1rxsck+6Od79/+skP5tr/CvN7zJ4/G/ra+4q9X6R0lRTdZpc+F6//s66Hbhp59venn/pAoe0uJN7jTd/Sd/79xe7bubSaZ26rnH3vwKk/dcN7AARYwh/zEPsLyZE/qu/+C9OZi0oJWLlLz38+3nxr76N/0Ln+L2XlOmE0RIg31Nj+6MaJfmX5NeVKS2N9SxSJlMqFTd0Do95cB5Ml41eYcr8z3zLbDgMANcm2r61mY4lSOTvR2bcpb8k3FLBK/fFu9AdmSmFDe62kAFyZ/6BeUB9KosyVWXJBkEs7F/sDQB0e3jrlIK7ELZ5lEwCQ/GDs8vZDz2w58PSWA09vOfDM5MC4LwoCKHp5oNzo0G4klCsIJFrXXitcfdtQt55f6A+5kNR6Y7uZOC2UekayjsGs1qRjMm+pBK6b/0DE7apOP7HtYLPAz2zd+8RIrWZQQYCr/CEIrOXA2j1Pz+7a09sOPt1wCA+HCuUum4ta+6nhnI6NaqHaHTs5r//S1rnjcPC5qYltOYVSu63U2u7IIgIApb290eMqzViBwCrHNnRV+Y3kP9obniQiAGCqUZxMwqyCAZCe6ViXd/N2puh79nVTNkvmP5BoW6XJeX8gWY4a5VJZIxgAE6+nvdaqMTrjj+rB6ekDNft6jWMAbFSLvdva5vIfgkAyk33bnto6eyS3Hn5xMG82n2GQUm/f+shoi7vIE1Im7NzZuDr/wX2vcXR6874b9cfUg39ieqsA1mitH+976aby4BcouUfv+tjQN/73ieduLq39dHbjH08+ekuxfhfRb6+cf1/fmT91vHsBAPi9wbab1z72wVztzqYSruGPNdT7fPWJ3xs8c6vnL2UIeme054OjL99UbP/S8o5HhOfW9+18YmNvy/KJJhKMtVU7/WY/W8IpXZC+ukb+g7r1hf4gTntS6Y1UBgCAGaEcr0AeqT/eRf4obmivlWSAJfzRPpAL/SujyUv6A/R47EJXHJqZsidTAADR8zt29uQzlPLmQnCzRlT0cn+xs+06LanZ3/pt+EPDcAP+sFuLnevKrj1XYIxn776r/VHcNtTRYSrK/MoI2NL+yHodewer+fnjQAhCvyV/zOXPmWGVJ5NMLGMAAWg0Uq0NZrOtrnytcNI8b9gfj65rbzOrGxsdDZteJxSzhD+Ctb29o5FpLDySAAACIlIhmb5vYnzMEef7xV7TH1g3W7aN7jzVmQ+vl81f2h+3KeFf1h77/ZFzt7reaiTf5U18ZPLyjD9azt/Ud/ZPXH/WH9tvXvvoB7Otd1zDHwKgNWL8l5XzN/Ud+7iprcZsFTfvYuIaxO+VvC8pzt2ErhGEVfbUH4+89L+1j9zGl+3KiEWttnd412PDRXu5sykIUrKpq2MwUNjcFymevdxvzB8s7Ku0j0Xa7BZWJo/UH+8WfwBhbk/rwNpABMCiGDRaukdm+u8yL6gP5sLgKn/AUv4ACKYmprcWg3DmViCaXl7XaK1pFANgIhuKZhAAANWoXOUP5jpRLTC0K5OvAtBr+IN5HfnqRDDX5F3CHyYRw0zHhmo+ljAAc7yOTR2la+c/lDhsX9eajUSMAAhTLVmS8WwxtPLmUlyY32W7p7N3IjZUghAAUzKxCIiFQ8Vyl80lrf3UcM5o+iMyXC2Z7O3ut0QCgImkSbpJgVLnmv4g+X3TvXWZECKpjFwrGUyZ1VbsGssaCgFARkuhMZl4zszacpzr21jNlRR8/R5jRA7izv0FFRb7w7FKk3nfn8nAIlmJGuVyRSMYgBB/oT92R5xhOcn2bK0G9vJ1N9LKSc/W9sjBhFFRIQiDXKn2bapkPI4RABW9UCIEASDRdVoarqTI+an+tp65I4+479e3d+d8TCiVtAW7h5nXqG16aKK3zxGX32vprnjP+6ceavpjtVb7eN9LN5WHPq+XPtn39fcMnv6Yqa4m5pdyez647okPFut3IenOzNZb+h+6udj9BUYFFn+u9dx7B0581A7uBRAABJ58pvOpfzV6+JNcWgMAgNbw8HOlEzd37f+3hroGkdVK6ydrRz6ca7lDqn6i87HfG7nvz5zwHqJ/oXDsprXP/5ti55eW78AmRtHo2aktewvy3FGgVMv6UcmSyPxZEwRsdLUNbqvGAccIsKZFbV4zyQQAAuhdl+rhFT0WMXXr+ZZRf/Y+Qma10LO5NReJGAFWlNQfqT+W9QcAsczatu7RzfXeTe19u3on93VV627QaOnf07/h1ND4ztZSq9nsTCogrEZ+bV3Hukuj6w40GhOJo8+3ksVceexYzZl7hMdET+LOzR39W+u9m9rq/aHtimourG1orD85svFoo3MksmYz52Zf9/SlsdaCsvBBnihybqg+cd/49MFGz4ZaLtO8EzC33dqGjrFjQ1Nn+xqjedekWNOLU/3rD3XXWnXRNpL1/ZtPDXTUDa6IXnd5YFtX/+Z6z8a20aOjo5ORpizdiMNc8uvFnq0dfVvqPRtrtS5XVTBwyWtLejd3rz8/MnGw0dkfWToBAKwaxbG2/m31vi31nqlKpSRzw+o8NLx2a+K2tWy4PNk7GJQmGhN7W31blDOZ9o2dg9vqvZvaOkeyQSDyjN+xY2hyV2suFqnntu0c3XCwo5jIzY5SUrVz7eGuvi211i5HvFaXTUr1lnzHulpjU1vv5o7+Ta2lqs5nZUNVNe6JTfM6/T2J7bRPtg3uHdz40PDAVLVQ0hkRAHOnJenZ3bvuvqGxPfVq3ZEpUov5vv3D45uKlkl4Ntt3cGzdtrKfuC0b+g9eGqi3qTyTGT67dmpfZ7WwXFuamE5tY+/o3o7OiSQTSQQDUDnsaenbVu/bUu+drtbaDcqpXswPH+zrHwkY49n1AxsfHuro8Jpj3LCsFtf1ju/r6FpbCMNF78gglttxYO32k22hv9ygSl75d72Pvmfq2Zvaxm+j2heKp943/s339Bz9uJt8Lrf/5vEX3ttz7NbWPR/uuvi+iRf+oP/0R4PSX8nBbcX9t/Rf+kB975/Uz900dOEjYfWvmiNjlK4/rx1//9jL/3ryyffXdn00yq9C9B537UcGX3hP3/E/ru7609Y9H+m88L6+C7cG4d3U+lK88+aBh97XefgjbSffP3L5j9omPi/Ky+Y/KA8HOjadHawU5bkuyERTS9uGpw/XA2nxc5is5kbahnd0DmypN9a1JDmZEhAY99qS7o3dm56cmNhW7xwt2KoAgIjutG/uHDs6NHWmr3si8U0KAFjVsgOtzS2sWB6pP95F/gCEqKH7BcfLmYanmYFhWJLsmX7B8QuOn7cMa6bRIgBiqmxn7eZ/ubEuLbhPEWHK4o6AQIjiGF7i+HnTMBlCiGnK/NdDdW54AdFUKzLkxYOdEaVaxvaTZjHsuQ61WJTsvDOzkUiTOEaMa4Hl50zdYETkWmD5iW2anGBAXDRCyy84Tqhonun4iigTxunihVCKAQAzrmdMP3H8nKGqBARhZvxgYebnnEBtVugCAFVkO2f7BcePFYIAc25mHS+jiJbuJ7blyapruLEmMgQIi6bmJo6ft0xHxAiwLJmR7cW6ohAsSWZke1lTU2eG1AhEtHK2n1iazhAgfGVpKeOEMExELmmymbX8gmN7MqMzZ5NwKmm6l6hstvct5oRevQWKsCg5s6fDy1m6wTASAGHJ0r2ZXbYtR6IYqKbYWdvNqJwjrKpOzvZCTdIkM7T8gmNbFIuiETl+YlsGJVcVmHIyEwxERLJ0t2A7ocpnY2uIcSOy/ILjZzXOEADihuYljuOKGGM1cvzEsVyZzoxkxNzQ3MR2QpVTBAuuNwERMcmPnx4fXRteq5UAANi4wyrdZpVuN4K7MbtHbf47fweXVhH1TqN0m1W6zUy+oIV/ZRRut0pfkI17EV5D9Tv15PbmFzX/bjw7rJK6XzBLt1nNpXi7qq0BtIbZdxhzH5Zus0q36/GdlK4BQSDanVp+9vP4DiZeJ3muZvNj54a6+9xFr3sgWHJ0y1fYVaM7sSRZkeUXHDeYuSSE5vjBZO6W0ZvxQMREZ+7DWJdnGxtkdgupP1J/3IA/3k0Iglze1b/98tSuR6cXLGvX7rtyAN3bBWQ0Lk4uLu30zkdGe8Z8cakCS/nc0OnpTWc7cqE0m63R68dHti/awtTOR8Z6R70lt/AGIbI/fOXhndp6vrfaqtM3/wgLCCm16ujBgbaqxt4ub1V5I4idp9cOb4oVBPCWX5+pP1J/pP5ISUlZCak/Un+k/khJSVkJqT9Sf6T+SElJWQmpP1J/pP5ISUlZIak/Un+k/khJSVkJqT9Sf6T+SElJWSGpP962/rjxk5j6IyUl5XdD6o+3oT9e1xlM/ZGSkvI7I/XH28QfmqatWrVKeJ2DgVJ/pKSk/C5J/bGQq4+PIAhr1qxZtWrVmjVrmvX76tWrV69ePVfXr1mzpvlfzXWutYW59Zt/Nrcwx+rVqxeuc4Ok/khJSXnHwN8Av6syC4v5XRXjzSD1R0pKytudZrPa87zBwcE9e/acOHHi+PHjO3fuHBoaGh0dPXfu3PT0tKLMvE777eaPf8Gk/khJSXkH0IyxrF69GmMsiiLnHCHUjNi4rhtFUWqIt57UHykpKe8k5qL5wswknsIKAvcpvxVSf6SkpKSkrITUHykpKSkpKyH1R0pKSkrKSkj9kZKSkpKyElJ/pKSkpKSshNQfKSkpKSkrIfVHSkpKSspKSP2RkpKSkrISUn+kpKSkpKyE1B8pKSkpKSsh9UdKSkpKykpI/ZGSkpKSshL+fzvW+Uoklw5rAAAAAElFTkSuQmCC" alt="" />

八、元素定位partial_link:find_element_by_partial_link_name()

1.有时候一个超链接它的字符串可能比较长,如果输入全称的话,会显示很长,这时候可以用一模糊匹配方式,截取其中一部分字符串就可以了

2.如“hao123”,只需输入“ao123”也可以定位到

九、元素定位xpath:find_element_by_xpath()

1.以上定位方式都是通过元素的某个属性来定位的,如果一个元素它既没有id、name、class属性也不是超链接,这么办呢?或者说它的属性很多重复的。这个时候就可以用xpath解决

2.xpath是一种路径语言,跟上面的定位原理不太一样,首先第一步要先学会用工具查看一个元素的xpath

3.安装上图的步骤,在FriePath插件里copy对应的xpath地址

十、元素定位:find_element_by_css_name()

1.css是另外一种语法,比xpath更为简洁,但是不太好理解。这里先学会如何用工具查看,后续的教程再深入讲解

2.打开FirePath插件选择css

3.定位到后如下图红色区域显示

最后总结:

selenium的webdriver提供了八种基本的元素定位方法,前面六种是通过元素的属性来直接定位的,后面的xpath和css定位更加灵活,需要重点掌握其中一个。

1.通过id定位:find_element_by_id()

2.通过name定位:find_element_by_name()

3.通过class定位:find_element_by_class_name()

4.通过tag定位:find_element_by_tag_name()

5.通过link定位:find_element_by_link_name()

6.通过partial_link定位:find_element_by_partial_link_name()

7.通过xpath定位:find_element_by_xpath()

8.通过css定位:find_element_by_css_name()

十一、多元素定位:find_elements_by_id()  #只要在单元素后面加多一个s就是定位出一个列表

find_element_by_id("ddjjdjjdj")[0].click()

十二、比较常用的地位xp和css的使用:

1、如果目标元素有id属性,优先使用id定位;

2、元素locator尽可能保证简洁,考虑locator中路径的变化频率,尽量减少后期更新和维护成本;

3、使用xpath时,不要一味的使用‘/’逐层进行选择;合理使用‘/’和‘//’,能简化表达式;

4、尽量使用函数和运算符,如contains(),text(),position()等;运算符包括算数运算符或逻辑运算符等;

 

以下举例xpath常用语法:

1) xpath=//img[@alt='The image alt text']

2) xpath=//table[@id='table1']//tr[n]/td[n]

3) xpath=//a[contains(text(), 'test')]      text属性使用text()

4) xpath=//a[contains(@href, '#id1')]/a[n]       其余属性则使用@属性名

5) xpath=//table[@class= 'style']//th[text()= 'xxx']/../td    其中../表示从子元素逆向定位父元素

6) xpath=//*[text()='right']

7) xpath=//*[starts-with(@href, 'xxx')]

8) xpath=//*[ends-with(@href, 'xxx')]

9) xpath=//*[matchs(text(), 'xxx')]    可使用正则表达式

10) xpath=//input[@name='name1' and @value='yes']     支持逻辑运算符and/or/not

 

以下举例css常用语法:

1) css用#表示id属性,如#kw

2) css用.表示class属性,如.slipt

3) css可直接使用标签名称,无任务标识符,如input

4) css通过其他属性定位时写为:css=[name='kwname']

5) css也可通过标签和属性组合定位,如css=[a.text='xxx']

以上这些都是前辈们总结出来的,希望能帮的到大家:自动化交流群:892749299

另外常用xps定位和css定位:

  很早之前就已经写过自动化了,不过点着功能久了就会容易忘记元素定位,尤其是xpath和css定位,所以就花点时间做下总结收集。

xpath有两种定位:

一.绝对路径(不推荐使用,除非已经使用了所有方式仍然无法定位)
方法:根据实际目录,逐层输写。
例子: find_element_by_xpath("/html/body/div[1]/span/input/a")  # div[1]指第1个元素
二.相对路径(推荐使用)

方法:找到元素有”精准元素“即唯一能标识的属性;

# 1、通过id定位(以百度首页为例)
driver.find_element_by_xpath("//*[@id='kw']").send_keys("test")
time.sleep(1) # 2、通过class定位
driver.find_element_by_xpath("//*[@class='s_ipt']").send_keys("test") # 3、通过name定位
driver.find_element_by_xpath("//input[@name='wd']").send_keys("test") # 4、通过其它属性定位
driver.find_element_by_xpath("//*[@autocomplete='off']").send_keys("test") # 5、多个属性组合定位(逻辑运算符and、or等)
driver.find_element_by_xpath("//*[@autocomplete='off' and @class='s_ipt']").send_keys("test") # 6、通过文本属性定位
driver.find_element_by_xpath("//*[text()='新闻']") # 7、通过父元素定位子元素(层级关系)
driver.find_element_by_xpath("//*[@id='u1']/a[2]") # 通过上一级的id对下一级a标签进行定位(索引从1开始) # 8、通过子元素找父元素
driver.find_element_by_xpath("//*[@id='kw']/..") # //*[@id='kw']/../.. 这个是找爷爷 # 9、模糊匹配
driver.find_element_by_xpath("//a[contains(text(),'hao')]") # 文本模糊匹配
driver.find_element_by_xpath("//input[contains(@class,'s_btn')]") # class属性模糊匹配,其它类似

CSS语法定位

# 1、通过id定位
driver.find_element_by_css_selector("#kw").send_keys("test") # 2、通过class定位(多个class属性有空格的话,将空格换成.)
driver.find_element_by_css_selector(".s_ipt").send_keys("test") # 3、通过tag定位
driver.find_element_by_css_selector("input") # 定位所有input标签 # 4、通过其它属性定位
driver.find_element_by_css_selector("[name='wd']").send_keys("test") # 5、通过父元素找子元素(组合定位)
driver.find_element_by_css_selector("#qrcode .qrcode-img") # 通过id为qrcode上一级或上上级找寻下级class为qrcode-img的元素
driver.find_element_by_css_selector("qrcode .qrcode-img:nth-child(1)") # 找刚刚上面结果的第一组元素,索引从1开始
driver.find_element_by_css_selector("#qrcode div.qrcode-img:nth-child(1)") # 组合定位,div标签下class为qrcode-img的元素

UI定位元素大全(跟App定位元素差不多哦)的更多相关文章

  1. Appium中app的元素定位

    app定位方式,本文只讲Android手机的定位方式. 前提条件是adb连接到模拟器或者是手机(具体连接方式这里不再讲解),证明已连接到设备 adb devices app元素定位工具一:UI Aut ...

  2. APP定位元素几种方法

    APP元素定位和操作 webdriver 提供了八种元素定位方法: 在 Python 语言中对应的定位方法如下:find_element_by_id()find_element_by_name()fi ...

  3. 使用uiautomatorviewer,查看app页面元素,进行元素定位

    环境搭建: 安装adt,安装成功后,就可以在adt路径下的tools文件夹中找到uiautomatorviewer.bat 用来做什么? uiautomatorviewer.bat是用来扫描和分析An ...

  4. 6.1 python+appium元素定位方式(登录app)

    1.0.0     :常见的十种元素定位方式 .driver.find_element_by_id() #id定位 .driver.find_element_by_name() #name定位(已经凉 ...

  5. APP定位元素之UiSelector

    1.UiSelector 类介绍 功能:通过各种属性与节点关系定位组件 操作步骤:找到对象->操作对象 2.四中匹配关系的介绍 (1)完全匹配 (2)包含匹配 (3)正则匹配 (4)起始匹 例子 ...

  6. webdriver中定位元素,报无法找到元素的问题

    webdriver中定位元素,报无法找到元素的问题时,需要查看以下几点: 1 用火狐的firebug插件定位元素,确保这个元素的定位正确: 2 在火狐的firebug插件的,在html页签中输入fra ...

  7. 浅析CSS——元素重叠及position定位的z-index顺序

    多次在项目中遇到html页面元素的非期待重叠错误,多数还是position定位情况下z-index的问题.其实每次解决类似问题思路大致都是一样的,说到底还是对z-index的理解比较模糊,可以解决问题 ...

  8. 元素重叠及position定位的z-index顺序

    元素位置重叠的背景常识 (x)html文档中的元素默认处于普通流(normal flow)中,也就是说其顺序由元素在文档中的先后位置决定,此时一般不会产生重叠(但指定负边距可能产生重叠).当我们用cs ...

  9. 【CSS】思考和再学习——关于CSS中浮动和定位对元素宽度/外边距/其他元素所占空间的影响

      一.width:auto和width:100%的区别   1.width:100%的作用是占满它的参考元素的宽度.(一般情况下参考元素 == 父级元素,这里写成参考元素而不是父级元素,在下面我会再 ...

随机推荐

  1. CSS - 视觉格式化模型(Visual formatting model)

    几个概念 块:block,一个抽象的概念,块与块之间在垂直方向上按照顺序依次堆叠. 行内:inline,一个抽象的概念,行内与行内之间在水平方向上按照顺序依次堆叠(会有换行). 元素:element, ...

  2. 2019 Nanchang Onsite

    D.Interesting Series F(n)实际上是一个等比数列的和,将它从递推式转变为通项公式(a^n-1)/(a-1),这里只需要确定n就可以. 题目要求选取k大小的所有子集的答案求和,可以 ...

  3. 20160513--js 弹出窗口带有iframe控件 备忘

    需要引用JQuery. /*! * 主 题:<页面弹出窗口> * 说 明:用于页面弹出的窗口. * 功能描述: * 1.生成弹出窗口,窗口内包括iframe控件: * 2.窗口弹出时,生成 ...

  4. adb之mokey的用法

    monkey是安卓稳定性的测试方向 目录 1.使用格式 2.一般命令 3.分析monkey日志 1.使用格式 monkey的固定使用模式如下:[adb shell] monkey [options] ...

  5. LeetCode——707 设计链表

    题目: 总而言之就是要用C++手撸链表,我的代码: class MyLinkedList { public: /** Initialize your data structure here. */ M ...

  6. ceph部署-常用命令

    常用命令:1.ceph healthceph -s 2.ceph osd treeceph osd lspoolsceph osd pool [poolname] rbd pg_numceph osd ...

  7. python列表-使用

    一.列表用于循环 1.for循环 2. in 和 not in 3.多重赋值

  8. Airbnb开源 快速搭建企业级BI数据平台

    最近在公司做一个数据可视化相关的项目,使用了Airbnb开源维护的企业级BI数据平台superset,相较于tableau这种收费的商业软件,Superset是开源维护的,同时图表的种类和颜值普遍偏高 ...

  9. JS 总结之关于 this 应该知道的几个点

    JS 中的 this 对每位前端工程师都不陌生,经常看到对象这里 this 那里 this,那什么是 this?答案就是上下文对象,即被调用函数所处的环境,也就是说,this 在函数内部指向了调用函数 ...

  10. body传参?parameter传参?Request Payload?Query String Parameter?

    今天,是有委屈的一天:今天,是有小情绪的一天.所以,我们要对今天进行小结,跟它做一个了断! 今天,后端来一个接口,告诉我"要用post请求,parameter形式传参".over. ...