我试图选择菜单中包含的选项。它不是一个选择菜单,但它的样式显示为这样。无论如何,如果菜单中包含的文本是英文的,我可以选择它。麻烦的是,我需要选择的文字是法语,所以它包含字母" c"与cedilla。 Webdriver似乎无法识别它。我在这里错过了什么吗?这是一个代码片段:
<div id="Language"><span class="combobox"><input name="" type="text" autocomplete="off" label="" placeholder="" class=""><span class="combobox-button" style="-webkit-user-select: none;">▼</span><div class="menu menu-vertical" role="menu" aria-haspopup="true" style="-webkit-user-select: none; left: 392px; top: 107px; display: none;"><div class="menuitem" role="menuitem" id=":15" style="-webkit-user-select: none;"><div class="menuitem-content">Français</div></div></div></span></div>
我使用xpath定位器通过文本获取元素,所以我没有尝试过这样做:
Iwebelement FrenchOption = driver.findelement(By.XPath("//div[text()='Français']"));
这个xpath定位器可以很好地找到英文文本。我已经找到了ID的元素,它工作得很好,但元素ID会改变,所以我想让它工作,所以我不必不断更改ID
答案 0 :(得分:1)
我在这里错过了什么吗?
是的,我想是的:
<div class="menuitem-content">Français</div>
缺少“a”
driver.findelement(By.XPath("//div[text()='Françis']"));
编辑:
至少在Java环境中,Webdriver 可以处理Unicode。这适用于我(在这种情况下驱动程序是FirefoxDriver
的实例):
driver.get("https://fr.wikipedia.org/wiki/Mot%C3%B6rhead");
WebElement we = driver.findElement(By.xpath("//h1[contains(., Motörhead)]"));
System.out.println(driver.getTitle() + " is showing " + we.isDisplayed());
打印出来:
Motörhead - Wikipédia显示真实
因此,如果您在编码方面遇到问题,可能是由于您对源文件进行了编码。
事实上你也提到了错字提示。如果您跨不同的编码复制并粘贴unicode字符,则结果是不可预测的。在这种情况下(只是猜测)由于转换不良,cedilla可能已经吃掉了“a”。