И я остановился на этом подходе
Код: Выделить всё
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
class Webpage:
element_count = 0
def __init__(self, element_count, driver):
self.element_count = element_count
self.driver = driver
driver = webdriver.Firefox()
try:
wait = WebDriverWait(driver, 10)
driver.get('https://the-internet.herokuapp.com')
# Parent page loads
wait.until(ec.url_to_be('https://the-internet.herokuapp.com/'))
# Variables go here (as they depend on parent loading)
add_remove_parent = wait.until(ec.presence_of_element_located(
(By.LINK_TEXT, 'Add/Remove Elements')))
driver.fullscreen_window()
# This is where the functions happen
add_remove_parent.click()
# * Assert that no elements have yet been added
wait.until(ec.url_to_be('https://the-internet.herokuapp.com/add_remove_elements/'))
# Child Page Loaded
wait.until(ec.element_to_be_clickable((By.XPATH, '//button[text()="Add Element"]')))
def add_element(self):
add_element_button = self.driver.find_element(By.XPATH, '//button[text()="Add Element"]')
add_element_button.click()
self.element_count += 1
print(f'The element count is {self.element_count}')
def delete_element(self):
delete_element_button = self.driver.find_element(By.CLASS_NAME, 'added-manually')
delete_element_button.click()
self.element_count -= 1
print(f'the element count is {self.element_count}')
webpage=Webpage(self,element_count=0 ,driver)
finally:
# Close the browser
driver.quit()
#
Кроме того, я знаю, что у меня пока нет никаких утверждений, я попробую добавить те, которые находятся после, возможно, в самих методах или, может быть, отдельно.
В большинстве случаев, когда я пробовал класс, кажется, не понимает, каким должен быть аргумент для self или драйвера, но я думал, что я предоставил это, сказав, что это должен быть Firefox.
Большой признателен за любую помощь!
Подробнее здесь: https://stackoverflow.com/questions/783 ... and-python