{"id":320370,"date":"2021-03-27T09:00:31","date_gmt":"2021-03-27T09:00:31","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=320370"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=320370","title":{"rendered":"Scala + Selenium. \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0432 \u0441\u0431\u043e\u0440\u043d\u043e\u0439 \u0438\u043c\u0435\u044e\u0442 \u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0441\u0442\u0432\u0430?"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Selenium \u043d\u0430 Scala, \u043e\u0442\u0432\u0435\u0447\u0430\u044f \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 &#171;\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0443\u0442\u0431\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043d\u043e\u0439 \u0438\u043c\u0435\u044e\u0442 \u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0441\u0442\u0432\u0430?&#187;<\/p>\n<p>\u0417\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u0441\u0430\u0439\u0442\u0430<a href=\"https:\/\/www.transfermarkt.com\/\" rel=\"noopener noreferrer nofollow\"> transfermarkt.com<\/a>:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/www.transfermarkt.com\/statistik\/weltrangliste\/statistik\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u0439\u0442\u0438\u043d\u0433 \u0441\u0431\u043e\u0440\u043d\u044b\u0445<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.transfermarkt.com\/belgien\/startseite\/verein\/3382\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u0431\u043e\u0440\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.transfermarkt.com\/dedryck-boyata\/profil\/spieler\/88262\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0438\u0433\u0440\u043e\u043a\u0430<\/a><\/p>\n<\/li>\n<li>\n<p>\u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0438\u0433\u0440\u043e\u043a\u0430 \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u0435 <strong>Citizenship<\/strong>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e<\/p>\n<\/li>\n<\/ul>\n<h4>List of football\/soccer teams<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 trait <code>org.scalatestplus.selenium.Page<\/code>, \u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0442\u0430\u043a:<\/p>\n<pre><code class=\"scala\">import org.scalatestplus.selenium.Page import org.scalatestplus.selenium.WebBrowser._ import org.openqa.selenium.WebDriver  implicit def webDriver: WebDriver = ??? \/* from container *\/  class RankingListPage(implicit val webDriver: WebDriver) extends Page {    val url = \"https:\/\/www.transfermarkt.com\/statistik\/weltrangliste\/statistik\" }  val rankingListPage = new RankingListPage() go to rankingListPage<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0435\u0451 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u0411\u0443\u0434\u0435\u043c \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 <strong>Compact <\/strong>\u0438 \u0434\u043e\u0436\u0434\u0435\u043c\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0430 \u0441\u0442\u0430\u043d\u0435\u0442 \u0432\u0438\u0434\u0438\u043c\u0430. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ca\/846\/aa8\/1ca846aa84c2009548a5501197b1a291.png\" width=\"855\" height=\"314\"><figcaption><\/figcaption><\/figure>\n<p>Xpath \u043b\u043e\u043a\u0430\u0442\u043e\u0440 \u043a\u043d\u043e\u043f\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0438\u043c:<\/p>\n<pre><code class=\"scala\">import org.scalatestplus.selenium.WebBrowser._  val compactTab: Query = xpath(\"\/\/div[.='Compact']\")<\/code><\/pre>\n<p>\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a (<strong><em>timeout <\/em><\/strong>\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435, <strong><em>query <\/em><\/strong>&#8212; \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442):<\/p>\n<pre><code class=\"scala\">import org.openqa.selenium._ import org.openqa.selenium.support.ui.WebDriverWait import org.openqa.selenium.support.ui.ExpectedConditions import org.scalatestplus.selenium.WebBrowser._ import java.time.Duration  def waitVisible(query: Query, timeout: Int)(implicit webDriver: WebDriver): WebElement =     new WebDriverWait(webDriver, Duration.ofSeconds(timeout)).until(ExpectedConditions.visibilityOfElementLocated(query.by))<\/code><\/pre>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0443 <strong>Compact<\/strong>.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0443 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0448\u0430\u0433\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0430\u043a\u0442\u0438\u0432\u043d\u0430 \u043b\u0438 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0430 (\u0430\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0430 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0435 <strong><em>class <\/em><\/strong>\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 &#171;active&#187;).<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0434\u0430, \u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u043c \u2014 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0435\u0442, \u0442\u043e \u043a\u043b\u0438\u043a\u0430\u0435\u043c \u043d\u0430 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0443 \u0438 \u0436\u0434\u0451\u043c, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0430 \u0441\u0442\u0430\u043d\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <strong><em>query: Query<\/em><\/strong><em> <\/em>\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0435 <strong><em>class <\/em><\/strong>\u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"scala\">def doesClassContain(value: String): Boolean =     (for {       element   &lt;- find(query)       attribute &lt;- element.attribute(\"class\")     } yield attribute.contains(value)).contains(true)<\/code><\/pre>\n<p>\u041a\u043b\u0438\u043a\u043d\u0443\u0442\u044c \u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a: <code>clickOn(query)<\/code><\/p>\n<p>\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435, \u043a\u043e\u0433\u0434\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <strong><em>class <\/em><\/strong>\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"scala\">def waitClassContain(value: String): Boolean =   new WebDriverWait(driver, Duration.ofSeconds(timeout)).until(ExpectedConditions.attributeContains(query.by, \"class\", value))<\/code><\/pre>\n<p>\u0418\u0442\u043e\u0433\u043e:<\/p>\n<pre><code class=\"scala\">def clickCompact(): Unit =     if (!compactTab.doesClassContain(\"active\")) {       clickOn(compactTab)       val _ = compactTab.waitClassContain(\"active\")     }<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u043d\u0430 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0435 <strong>Compact <\/strong>\u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u0441\u0435\u0445 \u0441\u0431\u043e\u0440\u043d\u044b\u0445. <\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438 \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0440\u0435\u0439\u0442\u0438\u043d\u0433\u0430 \u0438 \u0441 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a.   <\/p>\n<p>\u041b\u043e\u0433\u0438\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u043e\u0439:<\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0434\u043e\u0441\u0442\u0438\u0433\u043b\u0438 \u043b\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b <\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0435\u0442, \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u043f\u0443\u043d\u043a\u0442 \u0432\u044b\u0448\u0435<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0434\u043e\u0448\u043b\u0438 \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0442\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0441 \u043d\u0435\u0451<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/541\/486\/1e2\/5414861e2f83e77e87a429e59e7347cb.png\" width=\"851\" height=\"200\"><figcaption><\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0434\u043e\u0441\u0442\u0438\u0433\u043b\u0438 \u043b\u0438 \u043c\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0435\u0441\u0442\u044c \u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 (\u0441\u043c. \u0441\u043a\u0440\u0438\u043d \u0432\u044b\u0448\u0435, css \u043b\u043e\u043a\u0430\u0442\u043e\u0440 <code>li.naechste-seite &gt; a<\/code>):<\/p>\n<pre><code class=\"scala\">val nextPageLink: Query = cssSelector(\"li.naechste-seite &gt; a\")  def isPresent: Boolean = find(nextPageLink).isDefined<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0440\u0430\u043d, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0439\u0442\u0438 \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441 xpath \u043b\u043e\u043a\u0430\u0442\u043e\u0440\u043e\u043c <code>\/\/table\/tbody\/\/a[count(*)=0]<\/code><em> <\/em>\u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0441\u0447\u0438\u0442\u0430\u0442\u044c <strong>text <\/strong>\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 <strong>href <\/strong>(\u0438\u043b\u0438 <code>\/\/table\/tbody\/tr[td[.='CONMEBOL']]\/\/a[count(*)=0]<\/code><em> <\/em>&#8212; \u0435\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0430 \u043a\u043e\u043d\u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0430\u043c\u0430\u044f \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f &#8212; CONMEBOL(\u042e\u0436\u043d\u0430\u044f \u0410\u043c\u0435\u0440\u0438\u043a\u0430)):<\/p>\n<pre><code class=\"scala\">val itemLink: Query = xpath(\"\/\/table\/tbody\/\/a[count(*)=0]\")  def items(): Seq[(String, Option[String])] =   findAll(itemLink).map(el =&gt; (el.text.trim, el.attribute(\"href\"))).toSeq<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043c\u0430\u043b\u043e \u043a\u043b\u0438\u043a\u043d\u0443\u0442\u044c \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 <strong><em>nextPageLink<\/em><\/strong>, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0435\u0449\u0451 \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442. <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043c\u044b \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b  (css \u043b\u043e\u043a\u0430\u0442\u043e\u0440 <code>li.selected &gt; a<\/code>), \u0430 \u043f\u043e\u0441\u043b\u0435 \u043a\u043b\u0438\u043a\u0430 \u043d\u0430 <strong><em>nextPageLink <\/em><\/strong>\u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u0442\u0430\u043d\u0435\u0442 \u043d\u0430 1 \u0431\u043e\u043b\u044c\u0448\u0435:<\/p>\n<pre><code class=\"scala\">val selectedPageLink: Query = cssSelector(\"li.selected &gt; a\")  def clickNextPage(): Unit = {   val nextPage = find(selectedPageLink).map(_.text).get().toInt + 1   clickOn(nextPageLink)   val _ = webDriverWait(driver).until(ExpectedConditions.textToBe(selectedPageLink.by, nextPage.toString)) }<\/code><\/pre>\n<p>\u0421\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0432\u0441\u0435 \u0432\u043e\u0435\u0434\u0438\u043d\u043e \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a (\u043d\u0430 13 \u043c\u0430\u0440\u0442\u0430 2021):<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/www.transfermarkt.com\/belgien\/startseite\/verein\/3382\" rel=\"noopener noreferrer nofollow\">Belgium<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.transfermarkt.com\/frankreich\/startseite\/verein\/3377\" rel=\"noopener noreferrer nofollow\">France<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.transfermarkt.com\/brasilien\/startseite\/verein\/3439\" rel=\"noopener noreferrer nofollow\">Brazil<\/a><\/p>\n<\/li>\n<li>\n<p>&#8230;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.transfermarkt.com\/britische-jungferninseln\/startseite\/verein\/17750\" rel=\"noopener noreferrer nofollow\">B. Virgin<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.transfermarkt.com\/anguilla\/startseite\/verein\/17748\" rel=\"noopener noreferrer nofollow\">Anguilla<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.transfermarkt.com\/san-marino\/startseite\/verein\/10521\" rel=\"noopener noreferrer nofollow\">San Marino<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c url \u0441\u0442\u0440\u0430\u043d\u044b \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u0441\u0431\u043e\u0440\u043d\u043e\u0439.<\/p>\n<p>\u042d\u0442\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0430\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u0431\u043e\u0440\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 \u0442\u0435 \u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043d\u0430\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0447\u0442\u043e \u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0440\u0435\u0439\u0442\u0438\u043d\u0433\u0430 \u0441\u0431\u043e\u0440\u043d\u044b\u0445. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043a\u0430\u0441\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 <strong><em>itemLink <\/em><\/strong>(\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0438\u0433\u0440\u043e\u043a\u0430).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5b0\/182\/847\/5b018284742415007b878cbf74ad87b4.png\" width=\"856\" height=\"367\"><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438\u0433\u0440\u043e\u043a\u0430 &#8212; \u044d\u0442\u043e xpath \u043b\u043e\u043a\u0430\u0442\u043e\u0440 <code>\/\/table\/tbody\/\/span[@class='hide-for-small']\/a[count(*)=0]<\/code>:<\/p>\n<pre><code class=\"scala\">val itemLink: Query = xpath(\"\/\/table\/tbody\/\/span[@class='hide-for-small']\/a[count(*)=0]\")<\/code><\/pre>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u0433\u0440\u043e\u043a\u0430 \u0441\u0431\u043e\u0440\u043d\u043e\u0439, \u043f\u043e\u043b\u044c\u0437\u0443\u044f\u0441\u044c \u0435\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0443 <strong>Profile<\/strong>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ac\/667\/46b\/5ac66746b6339bc189c44875667ec34e.png\" width=\"524\" height=\"455\"><figcaption><\/figcaption><\/figure>\n<p>\u041c\u044b \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043b\u0438 \u043d\u0430 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0443 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445. \u0417\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043e\u0434\u043d\u043e\u0433\u043e \u043d\u044e\u0430\u043d\u0441\u0430: \u0435\u0441\u043b\u0438 \u0440\u0430\u043d\u044c\u0448\u0435 \u0443 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0438 \u043c\u0435\u043d\u044f\u043b\u0441\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442  <strong><em>class<\/em><\/strong>,\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u043e\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u0443 \u0441\u0430\u043c\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438, \u0430 \u0443 \u0435\u0451 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f. \u041a\u0441\u0442\u0430\u0442\u0438, \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043d\u0435\u043c\u0435\u0446\u043a\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0441\u0430\u0439\u0442\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 <strong><em>class <\/em><\/strong>\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043d\u0435 \u0441\u0442\u0430\u043b\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439, \u0430 \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043d\u0430 \u043d\u0435\u043c\u0435\u0446\u043a\u043e\u043c &#8212; &#171;aktiv&#187;:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cf0\/476\/0fc\/cf04760fc38724c9a3be767865882fc8.png\" width=\"811\" height=\"370\"><figcaption><\/figcaption><\/figure>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0432\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430: \u0441\u0441\u044b\u043b\u043a\u0443 \u0438 \u0435\u0451 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f, \u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0443 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"scala\">val profileTab: Query  = xpath(\"\/\/li[@id='profile']\") val profileLink: Query = xpath(\"\/\/li[@id='profile']\/a\")  def clickProfile(): Unit =    if (!profileTab.doesClassContain(\"aktiv\")) {     clickOn(profileLink)     val _ = profileTab.waitClassContain(\"aktiv\")   }<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0441\u0442\u0432\u043e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <strong><em>img <\/em><\/strong>\u0438\u0437 \u0441\u0442\u0440\u043e\u043a\u0438 <strong>Citizenship:<\/strong>  \u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0435\u0451 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <strong><em>title<\/em><\/strong>:<\/p>\n<pre><code class=\"scala\">val citizenshipImg: Query = xpath(\"\/\/th[.='Citizenship:']\/following-sibling::td\/img\")  def citizenship(): Seq[String] = findAll(citizenshipImg).flatMap(_.attribute(\"title\")).toSeq<\/code><\/pre>\n<p>\u0412\u043e\u0442 \u0438 \u0432\u0441\u0435, \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442 \u0438 \u0442\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<p><strong><em>Results (for Russia, Ukraine and Belarus)<\/em><\/strong><\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p><strong><em>Country name<\/em><\/strong><\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p><strong><em>%<\/em><\/strong><\/p>\n<\/td>\n<td>\n<p><strong><em>Foreigners<\/em><\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>Russia<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p>11% (3\/28)<\/p>\n<\/td>\n<td>\n<p>(Brazil (1) -&gt; (M\u00e1rio Fernandes), Kyrgyzstan (1) -&gt; (Ilzat Akhmetov), Germany (1) -&gt; (Roman Neust\u00e4dter))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>Ukraine<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p>9% (3\/33)<\/p>\n<\/td>\n<td>\n<p>(Brazil (2) -&gt; (Marlos, J\u00fanior Moraes), Hungary (1) -&gt; (Igor Kharatin))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>Belarus<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p>4% (1\/25)<\/p>\n<\/td>\n<td>\n<p>(Cameroon (1) -&gt; (Maks Ebong))<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412 \u043d\u0430\u0448\u0438\u0445 \u0441\u0431\u043e\u0440\u043d\u044b\u0445 \u0442\u043e\u043b\u044c\u043a\u043e 3 \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0438\u0433\u0440\u043e\u043a\u0430 (\u0438 \u0432\u0441\u0435 \u0438\u0437 \u0411\u0440\u0430\u0437\u0438\u043b\u0438\u0438). \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0432 \u0421\u0421\u0421\u0420.<\/p>\n<p><strong><em>Results (for CONMEBOL)<\/em><\/strong><\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p><strong><em>Country name<\/em><\/strong><\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p><strong><em>%<\/em><\/strong><\/p>\n<\/td>\n<td>\n<p><strong><em>Foreigners<\/em><\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Brazil <\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>36% (9\/25)<\/p>\n<\/td>\n<td>\n<p>(Spain (3) -&gt; (Casemiro, Bruno Guimar\u00e3es, Vin\u00edcius J\u00fanior), Italy (1) -&gt; (Alex Telles), France (1) -&gt; (Thiago Silva), Portugal (4) -&gt; (Ederson, Marquinhos, Allan, Lucas Paquet\u00e1))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Argentina<\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>57% (13\/23)<\/p>\n<\/td>\n<td>\n<p>(Spain (2) -&gt; (Gonzalo Montiel, Lionel Messi), Italy (11) -&gt; (Lucas Mart\u00ednez Quarta, W\u00e1lter Kannemann, Nicol\u00e1s Tagliafico, Guido Rodr\u00edguez, Rodrigo de Paul, Giovani Lo Celso, Nicol\u00e1s Dom\u00ednguez, \u00c1ngel Di Mar\u00eda, Joaqu\u00edn Correa, Papu G\u00f3mez, Lucas Alario))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Uruguay <\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>51,5% (18\/35)<\/p>\n<\/td>\n<td>\n<p>(Spain (7) -&gt; (Jos\u00e9 Mar\u00eda Gim\u00e9nez, Sebasti\u00e1n Coates, Diego God\u00edn, Agust\u00edn Oliveros, Dami\u00e1n Su\u00e1rez, Lucas Torreira, Federico Valverde), Paraguay (1) -&gt; (Rodrigo Mu\u00f1oz), Italy (10) -&gt; (Fernando Muslera, Mart\u00edn Campa\u00f1a, Sergio Rochet, Mat\u00edas Vi\u00f1a, Franco Pizzichillo, Nahitan N\u00e1ndez, Mat\u00edas Vecino, Giorgian de Arrascaeta, Diego Rossi, Cristhian Stuani))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Colombia<\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>22% (6\/27)<\/p>\n<\/td>\n<td>\n<p>(Spain (4) -&gt; (Jeison Murillo, Johan Mojica, James Rodr\u00edguez, Luis Su\u00e1rez), Argentina (1) -&gt; (Frank Fabra), England (1) -&gt; (Steven Alzate))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Chile<\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>21% (5\/24)<\/p>\n<\/td>\n<td>\n<p>(Haiti (1) -&gt; (Jean Beausejour), Spain (3) -&gt; (Claudio Bravo, Gary Medel, Fabi\u00e1n Orellana), Italy (1) -&gt; (Luis Jim\u00e9nez))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Peru<\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>33% (12\/36)<\/p>\n<\/td>\n<td>\n<p>(Venezuela (1) -&gt; (Carlos Ascues), Spain (3) -&gt; (Alexander Callens, Cristian Benavente, Sergio Pe\u00f1a), Uruguay (1) -&gt; (Gabriel Costa), Italy (2) -&gt; (Luis Abram, Gianluca Lapadula), Netherlands (1) -&gt; (Renato Tapia), Switzerland (1) -&gt; (Jean-Pierre Rhyner), Portugal (1) -&gt; (Andr\u00e9 Carrillo), Croatia (1) -&gt; (Ra\u00fal Ruid\u00edaz), Lebanon (1) -&gt; (Mat\u00edas Succar))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Venezuela<\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>25% (7\/28)<\/p>\n<\/td>\n<td>\n<p>(Spain (4) -&gt; (Roberto Rosales, Juanpi A\u00f1or, Darwin Mach\u00eds, Fernando Aristeguieta), Switzerland (1) -&gt; (Rolf Feltscher), England (1) -&gt; (Luis Del Pino Mago), Colombia (1) -&gt; (Jan Hurtado))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Paraguay<\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>21% (7\/33)<\/p>\n<\/td>\n<td>\n<p>(Spain (1) -&gt; (Antonio Sanabria), Argentina (4) -&gt; (Santiago Arzamendia, Gast\u00f3n Gim\u00e9nez, Andr\u00e9s Cubas, Ra\u00fal Bobadilla), Italy (2) -&gt; (Antony Silva, Iv\u00e1n Piris))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Ecuador<\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>12% (4\/33)<\/p>\n<\/td>\n<td>\n<p>(Spain (3) -&gt; (Erick Ferigra, Pervis Estupi\u00f1\u00e1n, Leonardo Campana), Argentina (1) -&gt; (Hern\u00e1n Gal\u00edndez))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Bolivia<\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>25% (7\/28)<\/p>\n<\/td>\n<td>\n<p>(United States (2) -&gt; (Adri\u00e1n Jusino, Antonio Bustamante), Spain (1) -&gt; (Jaume Cu\u00e9llar), Argentina (1) -&gt; (Carlos Lampe), Brazil (1) -&gt; (Marcelo Moreno), Switzerland (1) -&gt; (Boris Cespedes), Portugal (1) -&gt; (Erwin S\u00e1nchez))<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p> \u0410 \u0432\u043e\u0442 \u0432 \u042e\u0436\u043d\u043e\u0439 \u0410\u043c\u0435\u0440\u0438\u043a\u0435 \u043b\u044e\u0434\u0435\u0439 \u0441 \u0434\u0432\u043e\u0439\u043d\u044b\u043c \u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0441\u0442\u0432\u043e\u043c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u044d\u0442\u043e \u043d\u0435\u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e: \u0432 \u0447\u0435\u043c\u043f\u0438\u043e\u043d\u0430\u0442\u0430\u0445 \u0415\u0432\u0440\u043e\u0441\u043e\u044e\u0437\u0430 \u0436\u0435\u0441\u0442\u043a\u0438\u0439 \u043b\u0438\u043c\u0438\u0442 \u043d\u0430 \u043b\u0435\u0433\u0438\u043e\u043d\u0435\u0440\u043e\u0432 (\u0432 \u0437\u0430\u044f\u0432\u043a\u0435 \u0442\u043e\u043b\u044c\u043a\u043e 3 \u0438\u0433\u0440\u043e\u043a\u0430 \u0441 \u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0441\u0442\u0432\u043e\u043c \u043d\u0435 \u0415\u0421), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044e\u0436\u043d\u043e\u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0446\u0430\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 \u0415\u0432\u0440\u043e\u043f\u0443, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0441\u0442\u0432\u043e \u0431\u044b\u0432\u0448\u0435\u0439 \u043c\u0438\u0442\u0440\u043e\u043f\u043e\u043b\u0438\u0438 (\u0411\u0440\u0430\u0437\u0438\u043b\u0438\u044f -&gt; \u041f\u043e\u0440\u0442\u0443\u0433\u0430\u043b\u0438\u044f, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 -&gt; \u0418\u0441\u043f\u0430\u043d\u0438\u044f), \u043b\u0438\u0431\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0441\u0440\u0435\u0434\u0438 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0435\u0434\u043a\u043e\u0432 \u0438\u0442\u0430\u043b\u044c\u044f\u043d\u0446\u0435\u0432. \u0412\u0442\u043e\u0440\u043e\u0435 \u043d\u0435 \u0442\u0430\u043a \u0441\u043b\u043e\u0436\u043d\u043e, \u043a\u0430\u043a \u043a\u0430\u0436\u0435\u0442\u0441\u044f. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0412\u0442\u043e\u0440\u043e\u0439 \u041c\u0438\u0440\u043e\u0432\u043e\u0439 \u0432\u043e\u0439\u043d\u044b \u042e\u0436\u043d\u0430\u044f \u0410\u043c\u0435\u0440\u0438\u043a\u0430 \u0445\u043e\u0442\u044c \u0438 \u0431\u044b\u043b\u0430 \u043d\u0430 \u0431\u0443\u043c\u0430\u0433\u0435 \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0439, \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043b\u0430\u0441\u044c \u043d\u0430 \u0434\u0432\u0430 \u043b\u0430\u0433\u0435\u0440\u044f: \u0411\u0440\u0430\u0437\u0438\u043b\u0438\u044f -&gt; \u0441\u043e\u044e\u0437\u043d\u0438\u043a\u0438, \u0410\u0440\u0433\u0435\u043d\u0442\u0438\u043d\u0430 + \u0423\u0440\u0443\u0433\u0432\u0430\u0439 -&gt; \u0444\u0430\u0448\u0438\u0441\u0442\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 1945 \u0433\u043e\u0434\u0430 \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0442\u0430\u043b\u044c\u044f\u043d\u0446\u044b \u0432 \u043f\u043e\u0438\u0441\u043a\u0430\u0445 \u043b\u0443\u0447\u0448\u0435\u0439 \u0436\u0438\u0437\u043d\u0438 \u0438\u043c\u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0438\u0437 \u0440\u0430\u0437\u0440\u0443\u0448\u0435\u043d\u043d\u043e\u0439 \u0444\u0430\u0448\u0438\u0441\u0442\u043a\u043e\u0439 \u0418\u0442\u0430\u043b\u0438\u0438 \u0432 \u0441\u0438\u043c\u043f\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0432\u0448\u0438\u043c \u0435\u0439 \u0410\u0440\u0433\u0435\u043d\u0442\u0438\u043d\u0435 \u0438 \u0423\u0440\u0443\u0433\u0432\u0430\u044e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c\u0443 \u0430\u0440\u0433\u0435\u043d\u0442\u0438\u043d\u0446\u0443 \u0438\u043b\u0438 \u0443\u0440\u0443\u0433\u0432\u0430\u0439\u0446\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0441\u0442\u0432\u043e \u0418\u0442\u0430\u043b\u0438\u0438 \u043d\u0435 \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 \u043f\u043e \u0444\u0430\u043c\u0438\u043b\u0438\u0438 \u0417\u0438\u043b\u044c\u0431\u0435\u0440\u043c\u0430\u043d &#8212; \u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0441\u0442\u0432\u043e \u0418\u0437\u0440\u0430\u0438\u043b\u044f &#8212; \u043a\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0440\u0435\u0434\u0438 \u043f\u0440\u0435\u0434\u043a\u043e\u0432 \u043d\u0443\u0436\u043d\u043e\u0439 \u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u0430 \u043d\u0430\u0439\u0434\u0451\u0442\u0441\u044f!<\/p>\n<p><a href=\"https:\/\/github.com\/artemkorsakov\/scalenium\/blob\/master\/examples\/src\/test\/scala\/com\/github\/artemkorsakov\/examples\/tests\/FootballTeams.scala\" rel=\"noopener noreferrer nofollow\">Source code<\/a><\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/549264\/\"> https:\/\/habr.com\/ru\/post\/549264\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f Selenium \u043d\u0430 Scala, \u043e\u0442\u0432\u0435\u0447\u0430\u044f \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 &#171;\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u0443\u0442\u0431\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043d\u043e\u0439 \u0438\u043c\u0435\u044e\u0442 \u0431\u043e\u043b\u0435\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0441\u0442\u0432\u0430?&#187;<\/p>\n<p>\u0417\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0441 \u0441\u0430\u0439\u0442\u0430<a href=\"https:\/\/www.transfermarkt.com\/\" rel=\"noopener noreferrer nofollow\"> transfermarkt.com<\/a>:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/www.transfermarkt.com\/statistik\/weltrangliste\/statistik\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u0439\u0442\u0438\u043d\u0433 \u0441\u0431\u043e\u0440\u043d\u044b\u0445<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.transfermarkt.com\/belgien\/startseite\/verein\/3382\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u0431\u043e\u0440\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.transfermarkt.com\/dedryck-boyata\/profil\/spieler\/88262\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0438\u0433\u0440\u043e\u043a\u0430<\/a><\/p>\n<\/li>\n<li>\n<p>\u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u0438\u0433\u0440\u043e\u043a\u0430 \u0435\u0441\u0442\u044c \u043f\u043e\u043b\u0435 <strong>Citizenship<\/strong>, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e<\/p>\n<\/li>\n<\/ul>\n<h4>List of football\/soccer teams<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 trait <code>org.scalatestplus.selenium.Page<\/code>, \u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0442\u0430\u043a:<\/p>\n<pre><code class=\"scala\">import org.scalatestplus.selenium.Page import org.scalatestplus.selenium.WebBrowser._ import org.openqa.selenium.WebDriver  implicit def webDriver: WebDriver = ??? \/* from container *\/  class RankingListPage(implicit val webDriver: WebDriver) extends Page {    val url = \"https:\/\/www.transfermarkt.com\/statistik\/weltrangliste\/statistik\" }  val rankingListPage = new RankingListPage() go to rankingListPage<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u0435\u0451 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u0411\u0443\u0434\u0435\u043c \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 <strong>Compact <\/strong>\u0438 \u0434\u043e\u0436\u0434\u0435\u043c\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0430 \u0441\u0442\u0430\u043d\u0435\u0442 \u0432\u0438\u0434\u0438\u043c\u0430. <\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>Xpath \u043b\u043e\u043a\u0430\u0442\u043e\u0440 \u043a\u043d\u043e\u043f\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0438\u043c:<\/p>\n<pre><code class=\"scala\">import org.scalatestplus.selenium.WebBrowser._  val compactTab: Query = xpath(\"\/\/div[.='Compact']\")<\/code><\/pre>\n<p>\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a (<strong><em>timeout <\/em><\/strong>\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435, <strong><em>query <\/em><\/strong>&#8212; \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442):<\/p>\n<pre><code class=\"scala\">import org.openqa.selenium._ import org.openqa.selenium.support.ui.WebDriverWait import org.openqa.selenium.support.ui.ExpectedConditions import org.scalatestplus.selenium.WebBrowser._ import java.time.Duration  def waitVisible(query: Query, timeout: Int)(implicit webDriver: WebDriver): WebElement =     new WebDriverWait(webDriver, Duration.ofSeconds(timeout)).until(ExpectedConditions.visibilityOfElementLocated(query.by))<\/code><\/pre>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0443 <strong>Compact<\/strong>.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0443 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0448\u0430\u0433\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0430\u043a\u0442\u0438\u0432\u043d\u0430 \u043b\u0438 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0430 (\u0430\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0430 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0435 <strong><em>class <\/em><\/strong>\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 &#171;active&#187;).<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0434\u0430, \u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u043c \u2014 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d.<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0435\u0442, \u0442\u043e \u043a\u043b\u0438\u043a\u0430\u0435\u043c \u043d\u0430 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0443 \u0438 \u0436\u0434\u0451\u043c, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0430 \u0441\u0442\u0430\u043d\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <strong><em>query: Query<\/em><\/strong><em> <\/em>\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0435 <strong><em>class <\/em><\/strong>\u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"scala\">def doesClassContain(value: String): Boolean =     (for {       element   &lt;- find(query)       attribute &lt;- element.attribute(\"class\")     } yield attribute.contains(value)).contains(true)<\/code><\/pre>\n<p>\u041a\u043b\u0438\u043a\u043d\u0443\u0442\u044c \u043d\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a: <code>clickOn(query)<\/code><\/p>\n<p>\u041e\u0436\u0438\u0434\u0430\u043d\u0438\u0435, \u043a\u043e\u0433\u0434\u0430 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <strong><em>class <\/em><\/strong>\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"scala\">def waitClassContain(value: String): Boolean =   new WebDriverWait(driver, Duration.ofSeconds(timeout)).until(ExpectedConditions.attributeContains(query.by, \"class\", value))<\/code><\/pre>\n<p>\u0418\u0442\u043e\u0433\u043e:<\/p>\n<pre><code class=\"scala\">def clickCompact(): Unit =     if (!compactTab.doesClassContain(\"active\")) {       clickOn(compactTab)       val _ = compactTab.waitClassContain(\"active\")     }<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u043d\u0430 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0435 <strong>Compact <\/strong>\u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u0441\u0435\u0445 \u0441\u0431\u043e\u0440\u043d\u044b\u0445. <\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438 \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0440\u0435\u0439\u0442\u0438\u043d\u0433\u0430 \u0438 \u0441 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a.   <\/p>\n<p>\u041b\u043e\u0433\u0438\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u043e\u0439:<\/p>\n<ul>\n<li>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0434\u043e\u0441\u0442\u0438\u0433\u043b\u0438 \u043b\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b <\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0435\u0442, \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u043f\u0443\u043d\u043a\u0442 \u0432\u044b\u0448\u0435<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0434\u043e\u0448\u043b\u0438 \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0442\u043e \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0441 \u043d\u0435\u0451<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0434\u043e\u0441\u0442\u0438\u0433\u043b\u0438 \u043b\u0438 \u043c\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0435\u0441\u0442\u044c \u043b\u0438 \u043a\u043d\u043e\u043f\u043a\u0430 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 (\u0441\u043c. \u0441\u043a\u0440\u0438\u043d \u0432\u044b\u0448\u0435, css \u043b\u043e\u043a\u0430\u0442\u043e\u0440 <code>li.naechste-seite &gt; a<\/code>):<\/p>\n<pre><code class=\"scala\">val nextPageLink: Query = cssSelector(\"li.naechste-seite &gt; a\")  def isPresent: Boolean = find(nextPageLink).isDefined<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0442\u0440\u0430\u043d, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u0439\u0442\u0438 \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441 xpath \u043b\u043e\u043a\u0430\u0442\u043e\u0440\u043e\u043c <code>\/\/table\/tbody\/\/a[count(*)=0]<\/code><em> <\/em>\u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0441\u0447\u0438\u0442\u0430\u0442\u044c <strong>text <\/strong>\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 <strong>href <\/strong>(\u0438\u043b\u0438 <code>\/\/table\/tbody\/tr[td[.='CONMEBOL']]\/\/a[count(*)=0]<\/code><em> <\/em>&#8212; \u0435\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0430 \u043a\u043e\u043d\u0444\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0430\u043c\u0430\u044f \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f &#8212; CONMEBOL(\u042e\u0436\u043d\u0430\u044f \u0410\u043c\u0435\u0440\u0438\u043a\u0430)):<\/p>\n<pre><code class=\"scala\">val itemLink: Query = xpath(\"\/\/table\/tbody\/\/a[count(*)=0]\")  def items(): Seq[(String, Option[String])] =   findAll(itemLink).map(el =&gt; (el.text.trim, el.attribute(\"href\"))).toSeq<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u043c\u0430\u043b\u043e \u043a\u043b\u0438\u043a\u043d\u0443\u0442\u044c \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 <strong><em>nextPageLink<\/em><\/strong>, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0435\u0449\u0451 \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0435\u0442. <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043c\u044b \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b  (css \u043b\u043e\u043a\u0430\u0442\u043e\u0440 <code>li.selected &gt; a<\/code>), \u0430 \u043f\u043e\u0441\u043b\u0435 \u043a\u043b\u0438\u043a\u0430 \u043d\u0430 <strong><em>nextPageLink <\/em><\/strong>\u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441\u0442\u0430\u043d\u0435\u0442 \u043d\u0430 1 \u0431\u043e\u043b\u044c\u0448\u0435:<\/p>\n<pre><code class=\"scala\">val selectedPageLink: Query = cssSelector(\"li.selected &gt; a\")  def clickNextPage(): Unit = {   val nextPage = find(selectedPageLink).map(_.text).get().toInt + 1   clickOn(nextPageLink)   val _ = webDriverWait(driver).until(ExpectedConditions.textToBe(selectedPageLink.by, nextPage.toString)) }<\/code><\/pre>\n<p>\u0421\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0432\u0441\u0435 \u0432\u043e\u0435\u0434\u0438\u043d\u043e \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a (\u043d\u0430 13 \u043c\u0430\u0440\u0442\u0430 2021):<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/www.transfermarkt.com\/belgien\/startseite\/verein\/3382\" rel=\"noopener noreferrer nofollow\">Belgium<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.transfermarkt.com\/frankreich\/startseite\/verein\/3377\" rel=\"noopener noreferrer nofollow\">France<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.transfermarkt.com\/brasilien\/startseite\/verein\/3439\" rel=\"noopener noreferrer nofollow\">Brazil<\/a><\/p>\n<\/li>\n<li>\n<p>&#8230;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.transfermarkt.com\/britische-jungferninseln\/startseite\/verein\/17750\" rel=\"noopener noreferrer nofollow\">B. Virgin<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.transfermarkt.com\/anguilla\/startseite\/verein\/17748\" rel=\"noopener noreferrer nofollow\">Anguilla<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.transfermarkt.com\/san-marino\/startseite\/verein\/10521\" rel=\"noopener noreferrer nofollow\">San Marino<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c url \u0441\u0442\u0440\u0430\u043d\u044b \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u0441\u0431\u043e\u0440\u043d\u043e\u0439.<\/p>\n<p>\u042d\u0442\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0430\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u0431\u043e\u0440\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0441\u0435 \u0442\u0435 \u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043d\u0430\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b, \u0447\u0442\u043e \u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0440\u0435\u0439\u0442\u0438\u043d\u0433\u0430 \u0441\u0431\u043e\u0440\u043d\u044b\u0445. \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043a\u0430\u0441\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 <strong><em>itemLink <\/em><\/strong>(\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0438\u0433\u0440\u043e\u043a\u0430).<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438\u0433\u0440\u043e\u043a\u0430 &#8212; \u044d\u0442\u043e xpath \u043b\u043e\u043a\u0430\u0442\u043e\u0440 <code>\/\/table\/tbody\/\/span[@class='hide-for-small']\/a[count(*)=0]<\/code>:<\/p>\n<pre><code class=\"scala\">val itemLink: Query = xpath(\"\/\/table\/tbody\/\/span[@class='hide-for-small']\/a[count(*)=0]\")<\/code><\/pre>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0441\u0442\u0432\u043e \u0438\u0433\u0440\u043e\u043a\u0430 \u0441\u0431\u043e\u0440\u043d\u043e\u0439, \u043f\u043e\u043b\u044c\u0437\u0443\u044f\u0441\u044c \u0435\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439, \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u044d\u0442\u0430\u043f\u0435.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0443 <strong>Profile<\/strong>.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041c\u044b \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043b\u0438 \u043d\u0430 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0443 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445. \u0417\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u0442 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u043e\u0434\u043d\u043e\u0433\u043e \u043d\u044e\u0430\u043d\u0441\u0430: \u0435\u0441\u043b\u0438 \u0440\u0430\u043d\u044c\u0448\u0435 \u0443 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0438 \u043c\u0435\u043d\u044f\u043b\u0441\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0442  <strong><em>class<\/em><\/strong>,\u0442\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u043e\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0435 \u0443 \u0441\u0430\u043c\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438, \u0430 \u0443 \u0435\u0451 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f. \u041a\u0441\u0442\u0430\u0442\u0438, \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043d\u0435\u043c\u0435\u0446\u043a\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0441\u0430\u0439\u0442\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430 <strong><em>class <\/em><\/strong>\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043d\u0435 \u0441\u0442\u0430\u043b\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439, \u0430 \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u043d\u0430 \u043d\u0435\u043c\u0435\u0446\u043a\u043e\u043c &#8212; &#171;aktiv&#187;:<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0432\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430: \u0441\u0441\u044b\u043b\u043a\u0443 \u0438 \u0435\u0451 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f, \u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0443 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"scala\">val profileTab: Query  = xpath(\"\/\/li[@id='profile']\") val profileLink: Query = xpath(\"\/\/li[@id='profile']\/a\")  def clickProfile(): Unit =    if (!profileTab.doesClassContain(\"aktiv\")) {     clickOn(profileLink)     val _ = profileTab.waitClassContain(\"aktiv\")   }<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0441\u0442\u0432\u043e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 <strong><em>img <\/em><\/strong>\u0438\u0437 \u0441\u0442\u0440\u043e\u043a\u0438 <strong>Citizenship:<\/strong>  \u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0435\u0451 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <strong><em>title<\/em><\/strong>:<\/p>\n<pre><code class=\"scala\">val citizenshipImg: Query = xpath(\"\/\/th[.='Citizenship:']\/following-sibling::td\/img\")  def citizenship(): Seq[String] = findAll(citizenshipImg).flatMap(_.attribute(\"title\")).toSeq<\/code><\/pre>\n<p>\u0412\u043e\u0442 \u0438 \u0432\u0441\u0435, \u0432\u0441\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u044b, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442 \u0438 \u0442\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<p><strong><em>Results (for Russia, Ukraine and Belarus)<\/em><\/strong><\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p><strong><em>Country name<\/em><\/strong><\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p><strong><em>%<\/em><\/strong><\/p>\n<\/td>\n<td>\n<p><strong><em>Foreigners<\/em><\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>Russia<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p>11% (3\/28)<\/p>\n<\/td>\n<td>\n<p>(Brazil (1) -&gt; (M\u00e1rio Fernandes), Kyrgyzstan (1) -&gt; (Ilzat Akhmetov), Germany (1) -&gt; (Roman Neust\u00e4dter))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>Ukraine<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p>9% (3\/33)<\/p>\n<\/td>\n<td>\n<p>(Brazil (2) -&gt; (Marlos, J\u00fanior Moraes), Hungary (1) -&gt; (Igor Kharatin))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"112\" width=\"112\">\n<p>Belarus<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p>4% (1\/25)<\/p>\n<\/td>\n<td>\n<p>(Cameroon (1) -&gt; (Maks Ebong))<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412 \u043d\u0430\u0448\u0438\u0445 \u0441\u0431\u043e\u0440\u043d\u044b\u0445 \u0442\u043e\u043b\u044c\u043a\u043e 3 \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0438\u0433\u0440\u043e\u043a\u0430 (\u0438 \u0432\u0441\u0435 \u0438\u0437 \u0411\u0440\u0430\u0437\u0438\u043b\u0438\u0438). \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0432 \u0421\u0421\u0421\u0420.<\/p>\n<p><strong><em>Results (for CONMEBOL)<\/em><\/strong><\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p><strong><em>Country name<\/em><\/strong><\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p><strong><em>%<\/em><\/strong><\/p>\n<\/td>\n<td>\n<p><strong><em>Foreigners<\/em><\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Brazil <\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>36% (9\/25)<\/p>\n<\/td>\n<td>\n<p>(Spain (3) -&gt; (Casemiro, Bruno Guimar\u00e3es, Vin\u00edcius J\u00fanior), Italy (1) -&gt; (Alex Telles), France (1) -&gt; (Thiago Silva), Portugal (4) -&gt; (Ederson, Marquinhos, Allan, Lucas Paquet\u00e1))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Argentina<\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>57% (13\/23)<\/p>\n<\/td>\n<td>\n<p>(Spain (2) -&gt; (Gonzalo Montiel, Lionel Messi), Italy (11) -&gt; (Lucas Mart\u00ednez Quarta, W\u00e1lter Kannemann, Nicol\u00e1s Tagliafico, Guido Rodr\u00edguez, Rodrigo de Paul, Giovani Lo Celso, Nicol\u00e1s Dom\u00ednguez, \u00c1ngel Di Mar\u00eda, Joaqu\u00edn Correa, Papu G\u00f3mez, Lucas Alario))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Uruguay <\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>51,5% (18\/35)<\/p>\n<\/td>\n<td>\n<p>(Spain (7) -&gt; (Jos\u00e9 Mar\u00eda Gim\u00e9nez, Sebasti\u00e1n Coates, Diego God\u00edn, Agust\u00edn Oliveros, Dami\u00e1n Su\u00e1rez, Lucas Torreira, Federico Valverde), Paraguay (1) -&gt; (Rodrigo Mu\u00f1oz), Italy (10) -&gt; (Fernando Muslera, Mart\u00edn Campa\u00f1a, Sergio Rochet, Mat\u00edas Vi\u00f1a, Franco Pizzichillo, Nahitan N\u00e1ndez, Mat\u00edas Vecino, Giorgian de Arrascaeta, Diego Rossi, Cristhian Stuani))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Colombia<\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>22% (6\/27)<\/p>\n<\/td>\n<td>\n<p>(Spain (4) -&gt; (Jeison Murillo, Johan Mojica, James Rodr\u00edguez, Luis Su\u00e1rez), Argentina (1) -&gt; (Frank Fabra), England (1) -&gt; (Steven Alzate))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Chile<\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>21% (5\/24)<\/p>\n<\/td>\n<td>\n<p>(Haiti (1) -&gt; (Jean Beausejour), Spain (3) -&gt; (Claudio Bravo, Gary Medel, Fabi\u00e1n Orellana), Italy (1) -&gt; (Luis Jim\u00e9nez))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Peru<\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>33% (12\/36)<\/p>\n<\/td>\n<td>\n<p>(Venezuela (1) -&gt; (Carlos Ascues), Spain (3) -&gt; (Alexander Callens, Cristian Benavente, Sergio Pe\u00f1a), Uruguay (1) -&gt; (Gabriel Costa), Italy (2) -&gt; (Luis Abram, Gianluca Lapadula), Netherlands (1) -&gt; (Renato Tapia), Switzerland (1) -&gt; (Jean-Pierre Rhyner), Portugal (1) -&gt; (Andr\u00e9 Carrillo), Croatia (1) -&gt; (Ra\u00fal Ruid\u00edaz), Lebanon (1) -&gt; (Mat\u00edas Succar))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Venezuela<\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>25% (7\/28)<\/p>\n<\/td>\n<td>\n<p>(Spain (4) -&gt; (Roberto Rosales, Juanpi A\u00f1or, Darwin Mach\u00eds, Fernando Aristeguieta), Switzerland (1) -&gt; (Rolf Feltscher), England (1) -&gt; (Luis Del Pino Mago), Colombia (1) -&gt; (Jan Hurtado))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Paraguay<\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>21% (7\/33)<\/p>\n<\/td>\n<td>\n<p>(Spain (1) -&gt; (Antonio Sanabria), Argentina (4) -&gt; (Santiago Arzamendia, Gast\u00f3n Gim\u00e9nez, Andr\u00e9s Cubas, Ra\u00fal Bobadilla), Italy (2) -&gt; (Antony Silva, Iv\u00e1n Piris))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Ecuador<\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>12% (4\/33)<\/p>\n<\/td>\n<td>\n<p>(Spain (3) -&gt; (Erick Ferigra, Pervis Estupi\u00f1\u00e1n, Leonardo Campana), Argentina (1) -&gt; (Hern\u00e1n Gal\u00edndez))<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"104\" width=\"104\">\n<p>Bolivia<\/p>\n<\/td>\n<td data-colwidth=\"136\" width=\"136\">\n<p>25% (7\/28)<\/p>\n<\/td>\n<td>\n<p>(United States (2) -&gt; (Adri\u00e1n Jusino, Antonio Bustamante), Spain (1) -&gt; (Jaume Cu\u00e9llar), Argentina (1) -&gt; (Carlos Lampe), Brazil (1) -&gt; (Marcelo Moreno), Switzerland (1) -&gt; (Boris Cespedes), Portugal (1) -&gt; (Erwin S\u00e1nchez))<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p> \u0410 \u0432\u043e\u0442 \u0432 \u042e\u0436\u043d\u043e\u0439 \u0410\u043c\u0435\u0440\u0438\u043a\u0435 \u043b\u044e\u0434\u0435\u0439 \u0441 \u0434\u0432\u043e\u0439\u043d\u044b\u043c \u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0441\u0442\u0432\u043e\u043c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u044d\u0442\u043e \u043d\u0435\u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e: \u0432 \u0447\u0435\u043c\u043f\u0438\u043e\u043d\u0430\u0442\u0430\u0445 \u0415\u0432\u0440\u043e\u0441\u043e\u044e\u0437\u0430 \u0436\u0435\u0441\u0442\u043a\u0438\u0439 \u043b\u0438\u043c\u0438\u0442 \u043d\u0430 \u043b\u0435\u0433\u0438\u043e\u043d\u0435\u0440\u043e\u0432 (\u0432 \u0437\u0430\u044f\u0432\u043a\u0435 \u0442\u043e\u043b\u044c\u043a\u043e 3 \u0438\u0433\u0440\u043e\u043a\u0430 \u0441 \u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0441\u0442\u0432\u043e\u043c \u043d\u0435 \u0415\u0421), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044e\u0436\u043d\u043e\u0430\u043c\u0435\u0440\u0438\u043a\u0430\u043d\u0446\u0430\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 \u0415\u0432\u0440\u043e\u043f\u0443, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0441\u0442\u0432\u043e \u0431\u044b\u0432\u0448\u0435\u0439 \u043c\u0438\u0442\u0440\u043e\u043f\u043e\u043b\u0438\u0438 (\u0411\u0440\u0430\u0437\u0438\u043b\u0438\u044f -&gt; \u041f\u043e\u0440\u0442\u0443\u0433\u0430\u043b\u0438\u044f, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 -&gt; \u0418\u0441\u043f\u0430\u043d\u0438\u044f), \u043b\u0438\u0431\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u0441\u0440\u0435\u0434\u0438 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0435\u0434\u043a\u043e\u0432 \u0438\u0442\u0430\u043b\u044c\u044f\u043d\u0446\u0435\u0432. \u0412\u0442\u043e\u0440\u043e\u0435 \u043d\u0435 \u0442\u0430\u043a \u0441\u043b\u043e\u0436\u043d\u043e, \u043a\u0430\u043a \u043a\u0430\u0436\u0435\u0442\u0441\u044f. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0412\u0442\u043e\u0440\u043e\u0439 \u041c\u0438\u0440\u043e\u0432\u043e\u0439 \u0432\u043e\u0439\u043d\u044b \u042e\u0436\u043d\u0430\u044f \u0410\u043c\u0435\u0440\u0438\u043a\u0430 \u0445\u043e\u0442\u044c \u0438 \u0431\u044b\u043b\u0430 \u043d\u0430 \u0431\u0443\u043c\u0430\u0433\u0435 \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0439, \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u043b\u0430\u0441\u044c \u043d\u0430 \u0434\u0432\u0430 \u043b\u0430\u0433\u0435\u0440\u044f: \u0411\u0440\u0430\u0437\u0438\u043b\u0438\u044f -&gt; \u0441\u043e\u044e\u0437\u043d\u0438\u043a\u0438, \u0410\u0440\u0433\u0435\u043d\u0442\u0438\u043d\u0430 + \u0423\u0440\u0443\u0433\u0432\u0430\u0439 -&gt; \u0444\u0430\u0448\u0438\u0441\u0442\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 1945 \u0433\u043e\u0434\u0430 \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0442\u0430\u043b\u044c\u044f\u043d\u0446\u044b \u0432<\/p>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-320370","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/320370","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=320370"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/320370\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=320370"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=320370"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=320370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}