id、name、xpath、cssのうち、どのロケーターを使用する必要がありますか?
属性値については、最初に使用する必要があります。ただし、固有の要素がない場合は、速度の点でより効果的であるため、cssセレクターを使用する必要があります。
Cssには、子ノードから親ノードに移動できないという欠点もあります。つまり、逆方向に移動できません。しかし、xpathはこの機能を許可します。 XpathはSeleniumで最も一般的なロケーターであり、DOM要素と属性をトラバースしてオブジェクトを識別します。
xpathは、「/」と「//」の2つの方法で表されます。スラッシュは絶対パスを意味します。ここで、xpathはDOMの親から子に直接トラバースします。したがって、絶対xpathでは、ルートノードからターゲットに移動する必要があります。
構文-
driver.findElement(By.xpath("/html/body/div/input")).
二重順の「//」スラッシュは相対パスを意味します。ここで、xpathはDOMの隅々で一致する要素を見つけます。特別な出発点はありません。
構文-
driver.findElement(By.xpath("//input[@name=’Tutorial’]")).
絶対xpathではなく相対xpathを使用することを常にお勧めします。絶対xpathでは、ルートから目的の要素までを指定する必要があるため、属性とその値のいずれかがその間に変更されると、xpathは正しくなくなります。
例
import org.openqa.selenium.By; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import java.util.concurrent.TimeUnit; public class TextMatch { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "C:\\Users\\ghs6kor\\Desktop\\Java\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); String url = " https://www.tutorialspoint.com/questions/index.php"; driver.get(url); driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //identifying element with xpath driver.findElement(By.xpath("//input[@class=’gsc-input’]")).click(); driver.close(); } }
-
CSSとJavaScriptを使用してクラス名に基づいてDIV要素をフィルタリングするにはどうすればよいですか?
クラス名に基づいてDIV要素をフィルタリングするには、コードは次のとおりです- 例 <!DOCTYPE html> <html> <style> .filterElements { float: left; font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; font-size: 20px;
-
iPhone の名前を変更する方法 (および変更すべき理由)
新しい iPhone には、デフォルトで本名を含む名前が付いています。 Apple ID に仮名を使用しない限り、または iPhone の設定時に本名が iPhone の名前にも表示されます。 iPhone の名前を変更する方法は次のとおりです。 このチュートリアルでは、iPhone に接続されている Bluetooth アクセサリの名前を変更する方法についても説明します。ディスプレイが正しく動作しない場合でも、iPhone の名前を変更する方法を紹介します。 iPhone の名前を変更すべき理由 iPhone のデフォルト名には本名が含まれているため、AirDrop によってプライバシ