Python Selenium для выбора флажка на динамической веб-странице

Я пробовал несколько фрагментов кода, которые я нашел, не выполнил эту работу для меня. Кроме того, я проверяю и обнаружил, что элемент, который пытается выбрать, имеет идентификатор, поэтому

find_element_by_id

не работает. Я также попробовал

find_element_by_xpath и find_elements_by_name

Не из них работали. Я хочу, чтобы иметь возможность выбирать флажок на этом веб-сайте

Мой код выглядит так:

from selenium.webdriver.common.keys import Keys

url = "the web page above"

# Creates an instance driver object for chrome browser...
driver = webdriver.Chrome()

# Get the url
driver.get(url)
driver.maximize_window()

# Find list elements by id and click/select on it....
driver.find_element_by_xpath(".//*[contains(text(), 'Osborne & Little')]").click()

javascript,python,selenium,checkbox,web-scraping,

1

Ответов: 3


0

Вы неправильно используете xpath. Перейдите в chrome-> inspect-> cmd + F, вы можете попробовать поместить в Xpath, чтобы проверить элемент выбора

Приведем здесь пример

      <span class="tss-label tss-label--hierarchy ng-binding" ng-class="displayRow[instance.item.id] ? 'tss-hierarchy__selectedStateText' : ''" ng-bind="instance.item.alias" title="Node-1: Instance #1 - d07f2ec4-71f1-4ae0-81c6-955c86e14c6e">Node-1: Instance #1</span>

могут быть выбраны

      xpath "//*[contains(@title,'Node-1: Instance #1')]

0

На мой взгляд, x-путь от вас указывается неправильно, но если предположить, что он правильный и что ваша проблема с загрузкой, потому что вы пытаетесь выполнить поиск элемента до его загрузки, попробуйте это и дайте мне знать PLS, в любом случае, если вы дадите мне более подробную информацию, такую ??как URL-адрес и необходимый элемент, я могу вам помочь:

from selenium.webdriver.common.keys import Keys
import time

url = "the web page above"

# Creates an instance driver object for chrome browser...
driver = webdriver.Chrome()

# Get the url
driver.get(url)
driver.maximize_window()

# Find list elements by id and click/select on it....
#wait the item is loaded
i=0
while i<1:
    try:
        driver.find_element_by_xpath(".//*[contains(text(), 'Osborne & Little')]").click()
        i=1
    except:
        time.sleep(1)
        i=0

убедитесь, что вы используете правильный x-путь, открываете URL-адрес с помощью firefox и устанавливаете плагин Firebug и firepath


0

В соответствии с этим вам нужно найти все элементы, которые вам нужно щелкнуть по нему, и повторить их до конца, этот пример с java, но тот же принцип

Для вашей конкретной проблемы вы можете сделать следующее или упростить с помощью xpath, но это пример, который будет работать для вашей конкретной проблемы

WebDriver driver = new FirefoxDriver();
  driver.get("http://www.osborneandlittle.com/products-and-collections/fabric");
if (driver.findElements(By.partialLinkText("Osborne & Little")).isEmpty()) {
    new WebDriverWait(
            driver, TIME_TO_WAIT).until(
                    ExpectedConditions.presenceOfElementLocated(
                            By.name("brand")));
    List<WebElement> elements = driver.findElements(By.tagName("label"));

    for (int i = 0; i < elements.size(); i++) {
      String textInCurrentlabel = elements.get(i).getText();
      if (textInCurrentlabel.equals("Osborne & Little")) {
        elements.get(i).click();
        break;
      }
    }
  }
JavaScript, Python, селен, флажок, веб-соскоб,
Похожие вопросы