我有以下html:
<table id="oTable">
<tbody>
<tr mote.id="12345">
<td>Status</td>
<td>1</td>
</tr>
<tr mote.id="54321">
<td>Status</td>
<td>2</td>
</tr>
</tbody>
我想找到mote.id
行并点击第一个td
- 标记
WebElement element = getDriver().findElement(By.xpath("//tr[@mote.id='12345']/td[1]"));
但是我得到以下错误:
Bad token, expected: ] got: .
答案 0 :(得分:0)
使用此:
findElements(By.tagName("td")).get(0);
不需要mote.id。
使用
还有其他apporaches{{1}}
答案 1 :(得分:0)
要找到<td>
元素,请使用:
WebElement element = getDriver().findElement(By.xpath("//td[contains(text(),'Status')]"));
答案 2 :(得分:0)
在点之前需要两个<string name="app_link"><a href="My website link">Click me!</a></string>
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra("PostID", postID);
intent.putExtra("UserID", userID);
intent.putExtra(android.content.Intent.EXTRA_TEXT,activity.getString(R.string.app_link);
activity.startActivity(Intent.createChooser(intent, "Share"));
,第一个\\
以便第二个通过,第二个逃脱点,因此它变为文字。试试\
。
答案 3 :(得分:0)
你在哪个版本的Selenium?我在2.52.0(截至目前)和Python上。您的xpath有效:
>>> print driver.find_element_by_xpath("//*[@mote.id='12345']").get_attribute('innerHTML')
<td>Status</td>
<td>1</td>
>>>
>>> print driver.find_element_by_xpath("//tr[@mote.id='12345']/td[1]").get_attribute('innerHTML')
Status
或者,您可以编写辅助函数来查找所有相关的tr
元素,然后根据需要检查每个元素的mote.id
。
>>> def get_mote_by_id(mote_id):
... elems = driver.find_elements_by_xpath("//*[@id='oTable']/tbody/tr")
... for elem in elems:
... if elem.get_attribute('mote.id') == mote_id:
... return elem
...
>>>
>>> print get_mote_by_id('12345').get_attribute('innerHTML')
<td>Status</td>
<td>1</td>
(这显然比直接匹配的xpath要慢,但如果它是版本问题,那么它就是一种解决方法。)是的,它在Python而不是Java中,但应该清楚Java版本应该做什么。
PS:您是否可以让您的开发者或产品供应商使用mote_id
或moteid
代替mote.id
?这符合HTML和XML中的属性名称。