Python Селен L oop через меню выбора - PullRequest
0 голосов
/ 18 апреля 2020

Мне нужно l oop через меню выбора на этой странице:

https://printcopy.info/?mod=erc&brand=Kyocera&model=TASKalfa+307ci&page=1

В меню выбора есть дисплей: нет, поэтому я сделал следующее, чтобы получить значения:

    element = driver.find_element_by_id('selectNumPages')   
    driver.execute_script("return arguments[0].removeAttribute('style');", element)
    select = Select(driver.find_element_by_id('selectNumPages'))
    for opt in select.options:
        print(opt.text)

Это выводит каждое значение в меню выбора, теперь мне нужно нажать на каждое из них, чтобы я собирал данные на каждой странице.

Я пытался :

button = driver.find_element_by_id("selectNumPages-button")
button.click()

При нажатии выбирается меню, но URL страницы не изменяется

Любая помощь будет принята с благодарностью.

ОБНОВЛЕНИЕ

В итоге я использовал ActionChains

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

Если вы хотите пролистать страницы oop, вам не нужно нажимать на каждую страницу. Вы можете взять URL каждой страницы

https://printcopy.info/?mod=erc&brand=Kyocera&model=TASKalfa+307ci&page=1

Как вы можете видеть, есть "page = 1". Вы можете использовать это для того, чтобы l oop по страницам. Есть 23 страницы, так что ...

page_num = 23

for i in range(1,23):
    pg = str(i)
    driver.get('https://printcopy.info/?mod=erc&brand=Kyocera&model=TASKalfa+307ci&page='.pg)

Затем просто выберите нужные элементы.

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

0 голосов
/ 18 апреля 2020

Это пользовательский выпадающий список. Вы можете обратиться ниже код:

driver.get('https://printcopy.info/?mod=erc&brand=Kyocera&model=TASKalfa+307ci&page=1')
driver.maximize_window()
wait = WebDriverWait(driver, 15)

selector = wait.until(EC.element_to_be_clickable((By.XPATH, "//span[@id='selectNumPages-button']//span[@class='ui-selectmenu-icon ui-icon ui-icon-triangle-1-s']")))
actionChains = ActionChains(driver)
actionChains.move_to_element(selector).click().perform()
names=wait.until(EC.visibility_of_all_elements_located((By.XPATH, "//ul[@id='selectNumPages-menu']//li")))
for name in names:
    print(name.text)

Выход:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...