Я работаю с селеном и VBA в эти дни, и у меня есть сомнения; когда я пытаюсь работать с раскрывающейся «динамикой», я не могу понять, почему мой webelement или selecelement не обновляются и не получают ошибку при обновлении раскрывающегося списка.
Например, мне нужно работать с веб-страницей, в которой есть таблица и два выбора, а также ввод, подобный кнопке, таблица изменяется только тогда, когда я выбрал опцию в обоих вариантах выбора.
для этого примера мы скажем:
Первый выбор имеет идентификатор Select1.
второй выбор есть идентификатор Select2.
Таблица table имеет идентификатор Table_1.
кнопка ввода имеет идентификатор button1.
Таблица 1 изменяется или обновляется только в том случае, если в параметре Select1 И Select2 выбран параметр (если выбран только один параметр, таблица не изменяется или не обновляется)
В начале, когда открыта веб-страница (webdriver), выберите 1 и выберите 2, у которых нет опции выбора (вы знаете ... «Выбрать опцию»), конечно, в таблице_1 есть что-нибудь
для этого я использую:
Sub example()
'*// here a put code to initialize web driver and named WEB3
'*// in this part i have webpage opnened so...
'*//here i get my variables
Set GGT = WEB3.FindElementById("Select1").AsSelect
Set CBT = WEB3.FindElementById("Select2").AsSelect
Set SubElement = WEB3.FindElementByClass("button1")
'*//use this for to "play" with webpage
For Each i In GGT.Options
for each j in CBT.Options
GGT.SelectByIndex (i.Attribute("index"))
CBT.SelectByIndex (j.Attribute("index"))
subelment.click
Next
Next
end sub
ну, в этой таблице точек есть два выбора;
Select1 и Select2 независимы и оба являются статическими, то есть опции всегда одинаковы
Subelment (кнопка) обновляет таблицу и выбирает начало (не обновлять веб-страницу).
если я запускаю код, у меня нет проблем. Выберите вариант выбора 1 (1), затем выберите вариант 2 (1), (2) и т. Д .; Вы знаете все комбинации и таблицы генерируют все таблицы.
но если преобразование Select2 и теперь select2 зависит от Select1, у меня есть следующее условие:
Select1 является статическим, Select2 является динамическим и зависит от select1, то есть предположим, что у Select1 есть 3 варианта фруктов, форм и цветов.
но Select2 изменяется для каждого параметра в Select2 для этого примера
если Select1 - фрукты, у select2 есть варианты яблок и груш; если Select1 - фигуры, у select2 есть опции квадрат и круг, а если select1 - цвет, то select2 показывают красный и синий.
вот где у меня проблема, я не понимаю, что происходит, что приводит к ошибке
For Each i In GGT.Options
For Each j In CBT.Options
GGT.SelectByIndex (i.Attribute("index"))
CBT.SelectByIndex (j.Attribute("index")) '*//here show error 10 in
second iteration
subelement.click
Next
Next
Во-первых, я подумал, что из-за изменения Select2 мне нужно обновить переменную CBT, поэтому добавил:
Установите CBT = WEB3.FindElementById ("Select2"). AsSelect
между форсами так ...
For Each i In GGT.Options
Set CBT = WEB3.FindElementById("Select2").AsSelect
For Each j In CBT.Options
GGT.SelectByIndex (i.Attribute("index"))
CBT.SelectByIndex (j.Attribute("index")) '*//here show error 10 in
second iteration
subelement.click
Next
Next
но ошибка не работает, я не знаю, почему, если я обновляю CBT, не обновляю ее.
Я имею в виду, как в Excel, когда в ячейках (1,1) ставить = C2 + F3, если я перемещаю ячейки F3 в r2, автоматически актуализировать функцию, поэтому "= C2 + r2", но если я использую ключ supr или delet, изменяйте только значение, получающее функцию (0), НО, если я щелкну правой кнопкой мыши на F3 и выберу исключить ячейку, создадим ошибку REF, потому что ячейки F3 были устранены и поставлен новый F3. Я думаю, что это произошло по той причине, по которой я добавил
Установите CBT = WEB3.FindElementById ("Select2"). AsSelect
получить новый Select2, но не работает.
CBT sitll получает старый select2 и не получает новый select2
после того, как я попытался использовать явный код, то есть не использовать переменные CBT, GGT и ставить все предложения, но все равно.
ТАК это мой вопрос; как использовать SET или обновить Webelement o Selectelement insdie FOR-FOR с раскрывающимся списком.
или объяснение, почему не обновлять переменную, как другие переменные, я имею в виду
эта работа
Dim L as integer
L=4
L=5
L=L+5
эта работа
SET H=Webdriver.findelementbyid("kgkj")
SET H=Webdriver.findelementbyid("utut")
SET H=H.asselect
Но если я положу его в FOR-FOR (извините, привычка FOR-FOR - это два вложенных в FOR или FOR внутри XD), он не будет работать
Кто-то, кто может объяснить, почему или как выполнить этот маленький пример с FOR-FOR и динамикой выпадающего списка.
Первое, спасибо
NT: я использую .asselect и findelmentbyid (), потому что время назад использовался для использования getelment и Select, но сейчас я не знаю, почему этот синтаксис все еще не работает (я думаю, это потому, что используют VBA)