Selenium Нажмите и выберите выпадающее значение (jsslot) - PullRequest
0 голосов
/ 20 марта 2020
<span jsslot="" class="vRMGwf oJeWuf">Most relevant</span>
<span jsslot="" class="vRMGwf oJeWuf">Newest</span>
<span jsslot="" class="vRMGwf oJeWuf">Rating</span>

На этом сайте есть раскрывающийся список с доступными значениями (Наиболее релевантный, Новейший, Рейтинг). На сайте отображается только «Наиболее актуально». Как я могу заставить Selenium нажать на «Наиболее релевантные» (появляется выпадающий список), а затем нажать «Самые новые»? Обратите внимание, что «Новейшие» не отображаются на веб-сайте до тех пор, пока не будет нажата «Наиболее релевантная». Код ниже не может получить это. Ты для чтения.

driver.find_element_by_link_text("Most relevant").click()

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Попробуйте взять ссылку xPath на webElement над узлом span.

Затем попробуйте что-то вроде этого:

public void selectDataFromList(WebElement we, String data) throws InterruptedException 
{
    Thread.sleep(1000);
    List<WebElement> links = we.findElements(By.tagName("span"));
    for (int i = 0; i < links.size(); i++) {
        System.out.println(links.get(i).getText());
        if (links.get(i).getText().equals(data)) {
            Thread.sleep(1000);
            links.get(i).click();
            Thread.sleep(2000);
            break;
        }
    }
}
0 голосов
/ 20 марта 2020

Используйте функцию contains с оператором and и используйте .find_element_by_xpath.

Попробуйте следующий код:

driver.find_element_by_xpath("//span[@class='vRMGwf oJeWuf' and contains(text(), 'Most')]").click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...