Compare commits

..

8 Commits
main ... ueb12

Author SHA1 Message Date
0nlineSam
a10a5304aa Reorganized files 2025-02-02 19:06:19 +01:00
Artem Semenovykh
71ae963669 add 1.2 Doc and Diagram 2025-01-30 17:38:30 +01:00
Artem Semenovykh
debf2aa24d Ueb12 - 1.2 Documentation 2025-01-30 17:36:12 +01:00
8cb49e7c28
add-workflow 2025-01-30 17:01:32 +01:00
0nlineSam
aac01d998e Task 2 2025-01-30 16:06:35 +01:00
0nlineSam
9929ae7808 Solved task 1 2025-01-30 14:40:39 +01:00
0nlineSam
fa9c17c036 Initial solution for task 1 2025-01-30 14:24:56 +01:00
Artem Semenovykh
8555b77529 Add new directory 2025-01-30 13:06:18 +01:00
15 changed files with 627 additions and 0 deletions

38
Homework12/.gitignore vendored Normal file
View File

@ -0,0 +1,38 @@
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws
*.iml
*.ipr
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store

8
Homework12/.idea/.gitignore generated vendored Normal file
View File

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

7
Homework12/.idea/encodings.xml generated Normal file
View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component>
</project>

14
Homework12/.idea/misc.xml generated Normal file
View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_23" default="true" project-jdk-name="temurin-23" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

6
Homework12/.idea/vcs.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
</component>
</project>

29
Homework12/pom.xml Normal file
View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>Homework12</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>23</maven.compiler.source>
<maven.compiler.target>23</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.11.4</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.28.1</version>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,7 @@
package org.example;
public class Main {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}

View File

@ -0,0 +1,31 @@
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
public class DuckDuckGoPage extends Page {
private static final String URL = "https://html.duckduckgo.com/html";
private static final By SEARCH_BOX = By.id("search_form_input_homepage");
public DuckDuckGoPage(WebDriver driver) {
super(driver);
}
public void open() {
driver.get(URL);
}
public void performSearchAndClickResult(String searchTerm) {
driver.findElement(SEARCH_BOX).click();
driver.findElement(SEARCH_BOX).sendKeys(searchTerm);
driver.findElement(SEARCH_BOX).sendKeys(Keys.ENTER);
}
public UniMarburgDp12Page clickResultUniMarburgDp12(){
clickResult(UniMarburgDp12Page.DP_12_TITLE);
return new UniMarburgDp12Page(driver);
}
void clickResult(String desiredResultTitle){
driver.findElement(By.linkText(desiredResultTitle)).click();
}
}

View File

@ -0,0 +1,27 @@
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class ModuleHandbookPage extends UniMarburgPage {
public static final String SQ_MODULE_BASIC_INFO = "Lecture (4 SWS), recitation class (2 SWS),\n270 hours (90 h attendance, 180 h private study)";
public static final String SQ_MODULE_EXAM_INFO = "9 CP\nCourse requirement(s): Successful completion of at least 50 percent of the points from the weekly exercises as well as at least 2 presentations of the tasks.\nExamination type: Oral examination (individual examination) or written examination";
public static final By SQ_MODULE_BASIC_INFO_CSS_BLOCK = By.cssSelector("tr:nth-child(2) > td:nth-child(2)");
public static final By SQ_MODULE_EXAM_INFO_CSS_BLOCK = By.cssSelector("tr:nth-child(3) > td:nth-child(2)");
public static final By SQ_MODULE_NAME_CSS_BLOCK = By.cssSelector("h1 > b");
public static final By MS_COMPUTER_SCIENCE_PATH = By.xpath("(//a[text()=\'M.Sc. Computer Science\'])[2]");
public ModuleHandbookPage(WebDriver driver) {
super(driver);
}
public void verifyAndNavigateToSoftwareQualityModule() {
driver.findElement(MS_COMPUTER_SCIENCE_PATH).click();
driver.findElement(By.linkText("Alphabetical index of all modules in this course")).click();
driver.findElement(By.linkText("Software Quality")).click();
assertEquals("CS 661 — Software Quality", driver.findElement(SQ_MODULE_NAME_CSS_BLOCK).getText());
assertEquals(SQ_MODULE_BASIC_INFO, driver.findElement(SQ_MODULE_BASIC_INFO_CSS_BLOCK).getText());
assertEquals(SQ_MODULE_EXAM_INFO, driver.findElement(SQ_MODULE_EXAM_INFO_CSS_BLOCK).getText());
}
}

View File

@ -0,0 +1,9 @@
import org.openqa.selenium.WebDriver;
public abstract class Page {
protected final WebDriver driver;
public Page(WebDriver driver) {
this.driver = driver;
}
}

View File

@ -0,0 +1,64 @@
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.time.Duration;
import java.util.HashMap;
import java.util.Map;
public class Ueb12Test {
private WebDriver driver;
private Map<String, Object> vars;
JavascriptExecutor js;
@BeforeEach
public void setUp() {
driver = new FirefoxDriver();
js = (JavascriptExecutor) driver;
vars = new HashMap<>();
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
driver.manage().window().setSize(new Dimension(1337, 733));
}
@AfterEach
public void tearDown() {
driver.quit();
}
@Test
public void testIfUsersCanSearchForAndFindSoftwareQualityModule() {
// Using Google Search is not possible as it asks us to solve captchas ...
// googleSearch();
// Let's use DuckDuckGo instead!
DuckDuckGoPage duckDuckGoPage = new DuckDuckGoPage(driver);
duckDuckGoPage.open();
duckDuckGoPage.performSearchAndClickResult("uni marburg fb12");
UniMarburgDp12Page uniMarburgPage = duckDuckGoPage.clickResultUniMarburgDp12();
uniMarburgPage.changeLanguageToEnglish();
uniMarburgPage.checkMenuItems();
uniMarburgPage.checkAndSelectModulesAndCourses();
ModuleHandbookPage moduleHandbookPage = uniMarburgPage.checkAndOpenModuleGuide();
moduleHandbookPage.changeLanguageToEnglish();
moduleHandbookPage.verifyAndNavigateToSoftwareQualityModule();
}
private void googleSearch() {
driver.get("https://www.google.de/");
driver.manage().window().setSize(new Dimension(1337, 733));
driver.findElement(By.name("q")).sendKeys("uni marburg fb12");
driver.findElement(By.xpath("(//input[@name=\'btnK\'])[2]")).click();
driver.findElement(By.xpath("//h3[contains(.,\'Mathematik und Informatik\')]")).click();
}
}

View File

@ -0,0 +1,45 @@
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class UniMarburgDp12Page extends UniMarburgPage {
public static final String DP_12_TITLE = "Philipps-Universität Marburg - Mathematik und Informatik";
private static final Map<String, By> topics = Map.of(
"Department",
By.xpath("//div[@id=\'section-navigation\']/div/ul/li[2]/a"),
"Studying",
By.xpath("//div[@id=\'section-navigation\']/div/ul/li[3]/a"),
"Research",
By.xpath("//div[@id=\'section-navigation\']/div/ul/li[4]/a"),
"Research groups",
By.xpath("//div[@id=\'section-navigation\']/div/ul/li[5]/a")
);
private static final By MODULES_AND_COURSES_SELECTOR = By.cssSelector("li:nth-child(4) > a > div");
private static final By MODULE_GUIDE_SELECTOR = By.cssSelector(".link-text-list:nth-child(6) .diazoadded");
public UniMarburgDp12Page(WebDriver driver) {
super(driver);
}
public void checkMenuItems() {
for (String item : topics.keySet()) {
assertEquals(item, driver.findElement(topics.get(item)).getText());
}
}
public void checkAndSelectModulesAndCourses() {
driver.findElement(topics.get("Studying")).click();
assertEquals("Modules & Courses\nModules and Courses", driver.findElement(MODULES_AND_COURSES_SELECTOR).getText());
driver.findElement(MODULES_AND_COURSES_SELECTOR).click();
}
public ModuleHandbookPage checkAndOpenModuleGuide() {
assertEquals(("directly to the online module guide"), driver.findElement(MODULE_GUIDE_SELECTOR).getText());
driver.findElement(MODULE_GUIDE_SELECTOR).click();
return new ModuleHandbookPage(driver);
}
}

View File

@ -0,0 +1,23 @@
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import java.util.HashMap;
public class UniMarburgPage extends Page {
private static final By LANGUAGE_SELECTOR = By.cssSelector(".language > a");
public UniMarburgPage(WebDriver driver) {
super(driver);
}
public void changeLanguageToEnglish() {
JavascriptExecutor js = (JavascriptExecutor) driver;
HashMap<String, Object> vars = new HashMap<>();
vars.put("lang", driver.findElement(LANGUAGE_SELECTOR).getText());
if ((Boolean) js.executeScript("return (arguments[0] === \'ENGLISH\')", vars.get("lang"))) {
driver.findElement(LANGUAGE_SELECTOR).click();
}
}
}

319
Homework12/ueb12-test.side Normal file
View File

@ -0,0 +1,319 @@
{
"id": "eb04f4f9-5f11-4343-9336-dbe6b5a78af3",
"version": "2.0",
"name": "hw12",
"url": "https://www.google.de",
"tests": [{
"id": "8a49f466-f633-4340-9203-f86651654500",
"name": "Untitled",
"commands": [{
"id": "1626e190-3180-4c3a-8dcf-8abd372dc44b",
"comment": "",
"command": "open",
"target": "/",
"targets": [],
"value": ""
}, {
"id": "abfc43b8-4827-47ad-87ad-05cbc0181d62",
"comment": "",
"command": "setWindowSize",
"target": "1337x733",
"targets": [],
"value": ""
}, {
"id": "37565868-240d-49b8-913d-89177b740e51",
"comment": "",
"command": "type",
"target": "name=q",
"targets": [
["id=APjFqb", "id"],
["name=q", "name"],
["css=#APjFqb", "css:finder"],
["xpath=//textarea[@id='APjFqb']", "xpath:attributes"],
["xpath=//textarea", "xpath:position"]
],
"value": "uni marburg fb12"
}, {
"id": "afde340c-2c3d-4472-84f4-349f94fa20e1",
"comment": "",
"command": "click",
"target": "xpath=(//input[@name='btnK'])[2]",
"targets": [
["css=center:nth-child(1) > .gNO89b", "css:finder"],
["xpath=(//input[@name='btnK'])[2]", "xpath:attributes"],
["xpath=//div[3]/center/input", "xpath:position"]
],
"value": ""
}, {
"id": "796aa901-1076-48cb-b786-eae9ba6fdf40",
"comment": "",
"command": "click",
"target": "xpath=//h3[contains(.,'Mathematik und Informatik')]",
"targets": [
["css=.eKjLze .LC20lb", "css:finder"],
["xpath=//div[@id='rso']/div/div/div/div/div/div/div/div/div/div/div/span/a/h3", "xpath:idRelative"],
["xpath=//h3", "xpath:position"],
["xpath=//h3[contains(.,'Mathematik und Informatik')]", "xpath:innerText"]
],
"value": ""
}, {
"id": "f862ad37-a99d-44ec-8f50-9fb63899117a",
"comment": "",
"command": "storeText",
"target": "css=.language > a",
"targets": [
["css=.language > a", "css:finder"],
["xpath=//a[contains(text(),'English')]", "xpath:link"],
["xpath=//div[@id='service-navigation']/div[2]/ul/li[4]/a", "xpath:idRelative"],
["xpath=//a[contains(@href, 'https://www.uni-marburg.de/@@multilingual-selector/8d3dd0f85933453c9362b13354bb07b5/en?set_language=en')]", "xpath:href"],
["xpath=//div[2]/ul/li[4]/a", "xpath:position"]
],
"value": "lang"
}, {
"id": "29e943cb-4eb8-46df-9d8e-7fe2785ae4be",
"comment": "",
"command": "if",
"target": "${lang} === \"ENGLISH\"",
"targets": [],
"value": ""
}, {
"id": "3b426443-1e48-4890-912c-7638d2f3691d",
"comment": "",
"command": "click",
"target": "css=.language > a",
"targets": [
["css=.language > a", "css:finder"],
["xpath=//a[contains(text(),'English')]", "xpath:link"],
["xpath=//div[@id='service-navigation']/div[2]/ul/li[4]/a", "xpath:idRelative"],
["xpath=//a[contains(@href, 'https://www.uni-marburg.de/@@multilingual-selector/8d3dd0f85933453c9362b13354bb07b5/en?set_language=en')]", "xpath:href"],
["xpath=//div[2]/ul/li[4]/a", "xpath:position"]
],
"value": ""
}, {
"id": "0e03c4df-6910-4c93-9e3c-544a0d1b2b64",
"comment": "",
"command": "end",
"target": "",
"targets": [],
"value": ""
}, {
"id": "6c18fbce-b72f-4cb3-b4b3-6e22a9fba5e2",
"comment": "",
"command": "assertText",
"target": "xpath=//div[@id='section-navigation']/div/ul/li[2]/a",
"targets": [
["linkText=Department", "linkText"],
["css=.focused > a", "css:finder"],
["xpath=(//a[contains(text(),'Department')])[4]", "xpath:link"],
["xpath=//div[@id='section-navigation']/div/ul/li[2]/a", "xpath:idRelative"],
["xpath=//a[contains(@href, 'https://www.uni-marburg.de/en/fb12/department')]", "xpath:href"],
["xpath=//nav[4]/div/div/ul/li[2]/a", "xpath:position"]
],
"value": "Department"
}, {
"id": "3ca4a555-e71d-4d73-9b76-207d9d0cd6ad",
"comment": "",
"command": "assertText",
"target": "xpath=//div[@id='section-navigation']/div/ul/li[3]/a",
"targets": [],
"value": "Studying"
}, {
"id": "d33c6c12-8b20-4dc4-9361-f765c01b9ff5",
"comment": "",
"command": "assertText",
"target": "xpath=//div[@id='section-navigation']/div/ul/li[4]/a",
"targets": [
["css=.parent > a", "css:finder"],
["xpath=(//a[contains(text(),'Research')])[13]", "xpath:link"],
["xpath=//div[@id='section-navigation']/div/ul/li[4]/a", "xpath:idRelative"],
["xpath=//a[contains(@href, 'https://www.uni-marburg.de/en/fb12/research')]", "xpath:href"],
["xpath=//nav[4]/div/div/ul/li[4]/a", "xpath:position"]
],
"value": "Research"
}, {
"id": "5db74f46-b520-452a-b2e2-d2e66168bc51",
"comment": "",
"command": "assertText",
"target": "xpath=//div[@id='section-navigation']/div/ul/li[5]/a",
"targets": [
["linkText=Research groups", "linkText"],
["css=div > ul:nth-child(2) > li:nth-child(5) > a", "css:finder"],
["xpath=//a[contains(text(),'Research groups')]", "xpath:link"],
["xpath=//div[@id='section-navigation']/div/ul/li[5]/a", "xpath:idRelative"],
["xpath=//a[contains(@href, 'https://www.uni-marburg.de/en/fb12/research-groups')]", "xpath:href"],
["xpath=//nav[4]/div/div/ul/li[5]/a", "xpath:position"],
["xpath=//a[contains(.,'Research groups')]", "xpath:innerText"]
],
"value": "Research groups"
}, {
"id": "6ebfbd32-b7b5-4165-a22c-cacdf12a26d0",
"comment": "",
"command": "click",
"target": "xpath=//div[@id='section-navigation']/div/ul/li[3]/a",
"targets": [],
"value": ""
}, {
"id": "37fc82c3-52a0-4b72-b130-6df4521eec16",
"comment": "",
"command": "assertText",
"target": "css=li:nth-child(4) > a > div",
"targets": [
["css=li:nth-child(4) > a > div", "css:finder"],
["xpath=//section[@id='link-text-list-info']/div/ul/li[4]/a/div", "xpath:idRelative"],
["xpath=//li[4]/a/div", "xpath:position"]
],
"value": "Modules & Courses\\nModules and Courses"
}, {
"id": "6911e243-d2c5-435a-b525-485205d5e6da",
"comment": "",
"command": "click",
"target": "css=li:nth-child(4) > a > div",
"targets": [],
"value": ""
}, {
"id": "5a12117c-d549-487d-b840-8bd39b119431",
"comment": "",
"command": "verifyText",
"target": "css=.link-text-list:nth-child(6) .diazoadded",
"targets": [
["css=.link-text-list:nth-child(6) .diazoadded", "css:finder"],
["xpath=//div[@id='content']/section/div/ul[2]/li/a/div", "xpath:idRelative"],
["xpath=//div/ul[2]/li/a/div", "xpath:position"]
],
"value": "directly to the online module guide"
}, {
"id": "33f64c2d-6305-4e2b-a967-32e0327b126e",
"comment": "",
"command": "click",
"target": "css=.link-text-list:nth-child(6) .diazoadded",
"targets": [
["css=.link-text-list:nth-child(6) .diazoadded", "css:finder"],
["xpath=//div[@id='content']/section/div/ul[2]/li/a/div", "xpath:idRelative"],
["xpath=//div/ul[2]/li/a/div", "xpath:position"]
],
"value": ""
}, {
"id": "12d74fd3-1d17-4edd-92b7-41fc8beec0f8",
"comment": "",
"command": "storeText",
"target": "css=.language > a",
"targets": [
["css=.language > a", "css:finder"],
["xpath=(//a[contains(text(),'English')])[2]", "xpath:link"],
["xpath=//div[@id='service-navigation']/div/ul/li/a", "xpath:idRelative"],
["xpath=(//a[@href='http://www.mathematik.uni-marburg.de/modulhandbuch/20232/index_en.html'])[2]", "xpath:href"],
["xpath=//div/div/ul/li/a", "xpath:position"]
],
"value": "lang"
}, {
"id": "7fe0d220-c16b-40a2-b19f-e75455153e4b",
"comment": "",
"command": "if",
"target": "${lang} === \"ENGLISH\"",
"targets": [],
"value": ""
}, {
"id": "b218e2bb-1558-4cbd-864a-40dcb369fd61",
"comment": "",
"command": "click",
"target": "css=.language > a",
"targets": [
["css=.language > a", "css:finder"],
["xpath=(//a[contains(text(),'English')])[2]", "xpath:link"],
["xpath=//div[@id='service-navigation']/div/ul/li/a", "xpath:idRelative"],
["xpath=(//a[@href='http://www.mathematik.uni-marburg.de/modulhandbuch/20232/index_en.html'])[2]", "xpath:href"],
["xpath=//div/div/ul/li/a", "xpath:position"]
],
"value": ""
}, {
"id": "055f98d5-922f-4700-89f1-0c8784c9bf5d",
"comment": "",
"command": "end",
"target": "",
"targets": [],
"value": ""
}, {
"id": "28b8b697-3849-49ae-9811-70361b67f489",
"comment": "",
"command": "click",
"target": "xpath=(//a[text()='M.Sc. Computer Science'])[2]",
"targets": [
["css=ul > ul:nth-child(1) > li:nth-child(7) > a", "css:finder"],
["xpath=(//a[contains(text(),'M.Sc. Computer Science')])[2]", "xpath:link"],
["xpath=//div[@id='content']/section/div/ul/ul/li[7]/a", "xpath:idRelative"],
["xpath=(//a[@href='http://www.mathematik.uni-marburg.de/modulhandbuch/20232/MSc_Computer_Science/index.html'])[2]", "xpath:href"],
["xpath=//ul/ul/li[7]/a", "xpath:position"]
],
"value": ""
}, {
"id": "e0097e8b-8c39-412c-a5e5-990b867c26db",
"comment": "",
"command": "click",
"target": "linkText=Alphabetical index of all modules in this course",
"targets": [
["linkText=Alphabetical index of all modules in this course", "linkText"],
["css=p:nth-child(6) > a:nth-child(1)", "css:finder"],
["xpath=//a[contains(text(),'Alphabetical index of all modules in this course')]", "xpath:link"],
["xpath=//div[@id='content']/section/div/p[2]/a", "xpath:idRelative"],
["xpath=//a[@href='http://www.mathematik.uni-marburg.de/modulhandbuch/20232/MSc_Computer_Science/alphabetical.html']", "xpath:href"],
["xpath=//p[2]/a", "xpath:position"],
["xpath=//a[contains(.,'Alphabetical index of all modules in this course')]", "xpath:innerText"]
],
"value": ""
}, {
"id": "1dbbf4aa-cfef-4087-8c0a-1129855b6bcf",
"comment": "",
"command": "click",
"target": "linkText=Software Quality",
"targets": [
["linkText=Software Quality", "linkText"],
["css=li:nth-child(234) > a", "css:finder"],
["xpath=//a[contains(text(),'Software Quality')]", "xpath:link"],
["xpath=//div[@id='content']/section/div/ul/li[234]/a", "xpath:idRelative"],
["xpath=//a[@href='http://www.mathematik.uni-marburg.de/modulhandbuch/20232/MSc_Computer_Science/Compulsory_Elective_Modules_in_Computer_Science/Software_Quality.html']", "xpath:href"],
["xpath=//li[234]/a", "xpath:position"],
["xpath=//a[contains(.,'Software Quality')]", "xpath:innerText"]
],
"value": ""
}, {
"id": "6b7420ff-721a-43f2-8077-6046d8459eae",
"comment": "",
"command": "verifyText",
"target": "css=h1 > b",
"targets": [
["css=h1 > b", "css:finder"],
["xpath=//div[@id='content']/section/div/h1/b", "xpath:idRelative"],
["xpath=//h1/b", "xpath:position"]
],
"value": "CS 661 — Software Quality"
}, {
"id": "1322ec2c-b71d-4e8d-ae6f-2dd6190455cf",
"comment": "",
"command": "verifyText",
"target": "css=tr:nth-child(2) > td:nth-child(2)",
"targets": [],
"value": "Lecture (4 SWS), recitation class (2 SWS),\\n270 hours (90 h attendance, 180 h private study)"
}, {
"id": "3c74fc20-6526-4a7f-9cd5-72caa0e20c02",
"comment": "",
"command": "verifyText",
"target": "css=tr:nth-child(3) > td:nth-child(2)",
"targets": [
["css=tr:nth-child(3) > td:nth-child(2)", "css:finder"],
["xpath=//div[@id='content']/section/div/table/tbody/tr[3]/td[2]", "xpath:idRelative"],
["xpath=//tr[3]/td[2]", "xpath:position"]
],
"value": "9 CP\\nCourse requirement(s): Successful completion of at least 50 percent of the points from the weekly exercises as well as at least 2 presentations of the tasks.\\nExamination type: Oral examination (individual examination) or written examination"
}]
}],
"suites": [{
"id": "8deb4f55-ae91-4e30-98b5-f255c71951d3",
"name": "Default Suite",
"persistSession": false,
"parallel": false,
"timeout": 300,
"tests": ["8a49f466-f633-4340-9203-f86651654500"]
}],
"urls": ["https://www.google.de/"],
"plugins": []
}

BIN
Homework_12.pdf Normal file

Binary file not shown.