Selenium VBA XPath с циклом переменных предикатов - PullRequest
1 голос
/ 05 августа 2020

Я надеюсь на некоторую помощь с синтаксисом в Selenium VBA.

Я пытаюсь очистить дату таблицы, используя предикат переменной 'r', чтобы указать такую ​​строку, но это не работает.

Код действительно работает, когда вместо предиката 'r' подставляется целочисленное значение [я думаю, что предикат - правильное слово, глядя вокруг], поэтому я знаю, что выражение находит правильное значение.

For r = 2 To 4

ThisWorkbook.Sheets("Orders").Cells(r, 1).Value = bot.FindElementByXPath("//*[@id='ctl00_mainContent_ucOrdersList_dgOrders']/tbody/tr[r]/td[2]").Text

Next r

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

for (int i =1;i<rows.size();i++)
            {    
                max= wd.findElement(By.xpath("html/body/div[1]/div[5]/table/tbody/tr[" + (i+1)+ "]/td[4]")).getText();

Итак, по сути, как мне сделать бит tr[" + (i+1)+ "] в Selenium VBA?

Заранее спасибо.

1 Ответ

1 голос
/ 05 августа 2020

Попробуйте это на своем l oop:

ThisWorkbook.Sheets("Orders").Cells(r, 1).Value = bot.FindElementByXPath("//*[@id='ctl00_mainContent_ucOrdersList_dgOrders']/tbody/tr[" & r & "]/td[2]").Text

Используйте амперсанд & для соединения строк.

Это ключевой бит: "...tr[" & r & "]/td..."

Подробнее информация о соединении строк в vb здесь

Для оператора + они указывают:

Хотя в принципе знак + идентичен оператору конкатенации &, он также служит оператором сложения. Следовательно, как заявляет Microsoft:

При использовании оператора + вы не сможете определить, произойдет ли сложение или конкатенация строк. Используйте оператор & для конкатенации, чтобы устранить двусмысленность и предоставить самодокументированный код.

...