Почему моя селеновая IDE работает хорошо, а та же команда python - нет? - PullRequest
0 голосов
/ 16 сентября 2018

У меня есть некоторые проблемы при попытке автоматизировать повторяющиеся задачи на веб-сайте моей компании в интрасети.

Хотя я могу правильно находить элементы на других веб-сайтах (щелкать, отправлять ключи и т. Д.), Я не могу сделать то же самое вэтот веб-сайт (ошибка, которую я всегда получаю: " невозможно найти элемент с xpath == ...").

Я пытался сделать те же задачи записьих с Selenium IDE, и это хорошо работает.

Если я экспортирую тестовый пример Selenium IDE в виде кода Python и сравниваю команду xpath с моей, то xpath такой же, как и при использованииселектор firefox до точки, которую я хочу щелкнуть.

Поскольку по другим причинам я должен работать с проводником (поэтому у меня есть веб-драйвер проводника и т. д.), я не пытался запустить код с помощью python + (веб-драйвер)для Firefox).

Код:

from selenium import webdriver
import time
driver=webdriver.IE("D:\myfolder\IEDriverServer.exe")
driver.implicitly_wait(30)
base_url="https://companywebsite.ext")
driver.get(base_url)    #it's ok until now, I can open the webpage
time.sleep(20)
element=driver.find_element_by_xpath("/html/body/div[2]/div/table/tbody/tr[3]")
time.sleep(10)

Вот мои вопросы:

1) Почему я могу делать вещи правильно на других сайтах ине в этом?

2) Почему Selenium IDE умеетсделать это, и с теми же командами, он не работает с моим скриптом Python?

3) Нужно ли мне делать определенные настройки?

Большое спасибо.

1 Ответ

0 голосов
/ 16 сентября 2018

Вы должны попробовать использовать wait:

from selenium import webdriver
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.IE("D:\myfolder\IEDriverServer.exe")
driver.implicitly_wait(30)
base_url="https://companywebsite.ext")
driver.get(base_url)

wait = WebDriverWait(driver, 10)
element = wait.until(EC.visibility_of_element_located((By.XPATH, "/html/body/div[2]/div/table/tbody/tr[3]")))

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...