Селен не выбирает вариант из выпадающего - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь почерпнуть некоторую информацию с этого сайта http://www.dubaitrade.ae/ja-terminal-1

Мне нужно перейти к столбцу кода терминала и выбрать «General Cargo»

Вот HTML.

<select name="terminal" id="terminal1" style="width:52%" tabindex="3"> 
<option value="GC">General Cargo</option>
<option value="T1" selected="selected">Terminal One</option>
<option value="T2">Terminal Two</option>
<option value="T3">Terminal Three</option></select>

Я не уверен, что проблема в том, что она вложена в этот тег. Значит, это какая-то форма.

<form name="vesselform" id="vesselLinkFormID" method="post" action="/pmisc/vessel.do;jsessionid=1da4f04d50b1a09ff55171820810948e8430f1ad26af4f30e765658bb25b3ffa.e34NaxuKaxmOaO0OaxmKc34Sa3j0">

Я пытался

Select(driver.find_element_by_xpath('//*[@id="terminal1"]')).select_by_visible_text('General Cargo')
Select(driver.find_element_by_id('terminal1')).select_by_visible_text('General Cargo')
Select(driver.find_element_by_css_selector("terminal1"))
Select(driver.find_element_by_name('terminal1')).select_by_visible_text('General Cargo')      

Я всегда получаю сообщение об ошибке, не могу найти элемент.

1 Ответ

0 голосов
/ 26 апреля 2018

Ваш код почти идеален, но прежде чем вы начнете искать тег <select>, вам нужно переключиться на нужный <iframe> с id как blockrandom , вызывающий правильное WebDriverWait следующим образом:

from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver=webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
driver.get("http://www.dubaitrade.ae/ja-terminal-1")
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"blockrandom")))
Select(driver.find_element_by_xpath('//*[@id="terminal1"]')).select_by_visible_text('General Cargo')
...